Вы не можете определить, поддерживает ли клиент эти глаголы.Также для браузеров, которые не поддерживают глаголы PUT
и DELETE
в html-формах, вы можете использовать хелпер HttpMethodOverride внутри вашей формы, который добавит в форму скрытое поле, которое даст указание среде выполнения вызыватьправильное действие контроллера, несмотря на то, что под прикрытием отправляется POST
запрос.
<% using (Html.BeginForm("Destroy", "Products", new { id = "123" }, FormMethod.Post)) { %>
<%: Html.HttpMethodOverride(HttpVerbs.Delete) %>
<input type="submit" value="Delete" />
<% } %>
, который вызывает действие, украшенное [HttpDelete]
:
[HttpDelete]
public ActionResult Destroy(int id)
{
// TODO: delete product
TempData["message"] = "product deleted";
return RedirectToAction("index");
}
Важная вещьздесь контроллер не должен заботиться или зависеть от того, какие глаголы поддерживает клиент.Если вы разрабатываете свои контроллеры в режиме RESTful, используя правильные глаголы и имена, есть методы, подобные показанным здесь, которые позволяют клиентам, которые не поддерживают глаголы PUT
и DELETE
, по-прежнему вызывать эти действия.