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:

  1. Phương thức Action phải là public. Không thể private hay protected
  2. Phương thức Action không thể nap chồng (overloaded)
  3. 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

Action Method in ASP.NET MVC

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");
}

 

 Những điểm cần nhớ :

  1. Các phương thức ở dạng public của Controller đường gọi là các phương thức Action.
  2. Các phương thức Action có các hạn chế:
    • 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
  3. ActionResult là lớp cơ sở được trả về từ phương thức Action .
  4. Lớp cơ sở Controller chứa các phương thức trả về loại kết quả phù hợp, ví dụ: View(), Content(), File(), JavaScript() etc.
  5. Phương thức Action method có thể chứa tham số kiểu Nullable .