ASP.NET - MVC - Phương thúc Action
Action method
Tất cả các phương thức public của lớp Controller được gọi là Phương thức hành động. Chúng giống như bất kỳ phương pháp bình thường nào khác với các hạn chế sau:
- Phương thức Action phải là public. Không thể private hay protected
- Phương thức Action không thể nap chồng (overloaded)
- Phương thức Action không thể là phương thức static .
Ví dụ sau về phương thức action là Index của lớp StudentController
Như bạn có thể thấy trong hình trên, phương thức Index là một phương thức public và nó trả về ActionResult bằng phương thức View (). Phương thức View () được định nghĩa trong lớp cơ sở Controller, trả về ActionResult.
Phương thức Action mặc định
Mỗi controller có phương thức action mặc định được cài đặt trong lớp RouteConfig. Phương thức Index là phương action mặc định, được cài đặt mặc định,
Route mặc định:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
Tuy nhiên, bạn có thể thay đổi tên hành động mặc định theo yêu cầu của bạn trong lớp RouteConfig.
Phương thức ActionResult
MVC framework chứa nhiều lớp kết quả khác nhau, có thể được trả về từ một phương thức hành động. Có các lớp kết quả đại diện cho các loại phản hồi khác nhau, chẳng hạn như html, tệp, chuỗi, json, javascript, vv Bảng sau liệt kê tất cả các lớp kết quả có sẵn trong ASP.NET MVC.
Result Class | Description |
---|---|
ViewResult | Trả về HTML |
EmptyResult | Không trả về cái gì cả. |
ContentResult | Trả về chuỗi ký tự |
FileContentResult/ FilePathResult/ FileStreamResult | Trả về nội dung của tập tin |
JavaScriptResult | Trả về JavaScript script. |
JsonResult | Trả về một JSON có thể sử dụng trong AJAX |
RedirectResult | Chuyển hướng người dùng |
RedirectToRouteResult | Chuyển hướng hành động khác. |
PartialViewResult | Trả về HTML từ Partial view |
HttpUnauthorizedResult | Trả về lỗi và HTTP Code |
Lớp ActionResult là một lớp cơ sở của tất cả các lớp kết quả ở trên, do đó, nó có thể là kiểu trả về của các phương thức hành động trả về bất kỳ loại kết quả nào được liệt kê ở trên. Tuy nhiên, bạn có thể chỉ định lớp kết quả phù hợp làm kiểu trả về của phương thức hành động.
Phương thức Index () của StudentController trong hình trên sử dụng phương thức View () để trả về ViewResult (được lấy từ ActionResult). Phương thức View () được định nghĩa trong lớp Controller cơ sở. Nó cũng chứa các phương thức khác nhau, tự động trả về loại kết quả cụ thể như được hiển thị trong bảng dưới đây.
Result Class | Description | Base Controller Method |
---|---|---|
ViewResult | Trả về HTML. | View() |
EmptyResult | Represents No response. | |
ContentResult | Không trả về cái gì cả. | Content() |
FileContentResult, FilePathResult, FileStreamResult |
Trả về nội dung của tập tin |
File() |
JavaScriptResult | Trả về JavaScript script. | JavaScript() |
JsonResult | Trả về một JSON có thể sử dụng trong AJAX | Json() |
RedirectResult | Chuyển hướng người dùng | Redirect() |
RedirectToRouteResult | Chuyển hướng hành động khác. | RedirectToRoute() |
PartialViewResult | Trả về HTML từ Partial view | PartialView() |
HttpUnauthorizedResult | Trả về lỗi và HTTP Code |
Như bạn có thể thấy trong bảng trên, phương thức View trả về ViewResult, Phương thức nội dung trả về chuỗi, Phương thức tệp trả về nội dung của tệp, v.v. Sử dụng các phương pháp khác nhau được đề cập trong bảng trên, để trả về các loại kết quả khác nhau từ một phương thức hành động.
Các tham số của phương thức Action
Mỗi phương thức hành động có thể có các tham số đầu vào như các phương thức bình thường. Nó có thể là kiểu dữ liệu nguyên thủy hoặc tham số kiểu phức tạp như trong ví dụ dưới đây.
Ví dụ: Các tham số của phương thức Action
[HttpPost]
public ActionResult Edit(Student std)
{
// update student to the database
return RedirectToAction("Index");
}
[HttpDelete]
public ActionResult Delete(int id)
{
// delete student from the database whose id matches with specified id
return RedirectToAction("Index");
}