ASP.NET - MVC - ActionVerbs

ActionVerb

Một phương thức action khi được định nghĩa có thể được gọi theo Get và Post. Cách này cho phép lập trình viên có thể định nghĩa hai phương thức khác nhau nhưng cùng tên, một phương thức có thể dùng Http Get và phương thức kia thì đáp có thể dùng HttpPost.
MVC Framework hỗ trợ nhiều ActionVerb, như HttpGet, HttpPost, HttpPut, HttpDelete, HttpOptions & HttpPatch. Tùy theo tình huống, lập trình viên có thể sử dụng các ActionVerb khác nhau. Mặc định nếu không sử dụng ActionVerb nào, thì MVC Framework sẽ tự hiểu đó hà HttpGet.
Ví dụ minh họa sử dụng HttpGet và HttpPost khi thực hiện nghiệp vụ chỉnh sửa dữ liệu Student.

 

Hình số 4 : Ví dụ Attribute ActionVerb

The following table lists the usage of http methods:

Phương thức Http  Mô tả
GET Các tham số trên URL (query string) tự động được thêm vào như các tham số. HttpGet được dùng để nhận một resource từ server.
POST HttpPost attribute giới hạn action method chấp nhận HTTP Request sử dụng Post verb. Post verb được dùng để tạo mới bản ghi.
PUT HttpPut attribute giới hạn action method chỉ chấp nhận các HTTP Request sử dụng Put verb.
Put verb được dùng để cập nhật hoặc tạo mới tài nguyên.
HEAD

HttpHead attribute giới hạn action method chỉ chấp nhận HTTP Request sử dụng Head verb. Head verb được dùng để nhận các HTTP Header.
Phương thức này được định danh cho GET ngoại trừ các serrver không trả về message body.

OPTIONS HttpOptions attribute giới hạn action method chỉ chấp nhận các request sử dụng Options verb.
Method này nhận thông tin về tùy chọn giao tiếp được hỗ trợ bởi web server.
DELETE HttpDelete attribute giới hạn Action method chỉ chấp nhận HTTP Request sử dụng Delete verb. Delete verb được dùng để xóa tài nguyên đang tồn tại
PATCH HttPatch attribute giới hạn action method chỉ nhận các HTTP Request sử dụng Options verb.
Method nà sử dụng cho toàn bộ hoặc một phần việc cập nhật tài nguyên.

Xem thêm phương thức Http tại trang W3.org.

Sử dụng nhiều Action Verbs

AcceptVerbs  attribute cho phép sử dụng nhiều action verb trên action method:

Chú ý: Trong một phương thức Action có thể áp dụng nhiều ActionVerb, Ví dụ phương thức dưới đây áp dụng cả Http Get và Http Post.
 

[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult GetAndPostAction()
{
    return RedirectToAction("Index");
}