Когда вы отправляете запрос POST, платформа автоматически вызывает действие POST. Например, если у вас есть HTML-форма:
<% using (Html.BeginForm("Index", "Home", FormMethod.Post)) {%>
<input type="submit" value="OK" />
<% } %>
Он автоматически вызовет действие индекса POST:
[HttpPost]
public ActionResult Index()
{
...
}
или вы можете использовать jquery для отправки запроса AJAX и указать, что вы хотите POST:
$.post('/home/index', function(result) {
alert('successfully invoked the POST index action');
});
Что касается других глаголов, таких как PUT и DELETE, они поддерживаются только в вызовах AJAX. Вы не можете указать это в форме HTML. Хотя есть обходной путь. Следующая форма:
<% using (Html.BeginForm("Destroy", "Home", FormMethod.Post)) {%>
<%= Html.HttpMethodOverride(HttpVerbs.Delete) %>
<input type="submit" value="OK" />
<% } %>
вызовет это действие:
[HttpDelete]
public ActionResult Destroy() {}
Способ, которым это работает, заключается в том, что используется глагол POST, но вместе с запросом отправляется дополнительное скрытое поле, которое позволяет механизму направить к правильному действию контроллера. Если вы используете AJAX, вы можете указать непосредственно нужный глагол:
$.ajax({
url: '/home/destroy',
type: 'DELETE',
success: function(result) {
}
});