似乎默认是GET,hwo来处理POST和其他Http操作?
答案 0 :(得分:7)
当您发送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) {
}
});
答案 1 :(得分:2)
将此属性添加到您的操作方法:
[HttpPost]
答案 2 :(得分:0)
只需在aspx中确保您的处理操作方法是表单POST的操作,您就可以了:
using(Html.BeginForm("ActionName", "ControllerName") {}
ActionName是处理POST的方法。
或者我误解了这个问题?