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