ASP.net MVC 表单提交总是调用 GET 操作而不是 POST



我在MVC中有一个表单 ASP.net 如下所示:

<div class="x_content">
<form id="elementEditForm" class="form-horizontal form-label-left">
<input type="hidden" name="returnUrl" value="@ViewBag.returnUrl" />

... my form fields....
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
<button type="submit" form="elementEditForm" class="btn btn-success">Submit</button>
</div>
</div>
</form>
</div>

在控制器中,我有:

[HttpGet]
public ActionResult Edit(string id, string returnUrl = null)
{
var e = getEditModel(id);
return View("GenericElementEdittView", e);
}
[HttpPost]
public ActionResult Edit(string id, object evm, string returnUrl = null)
{
log.Info(evm);
return View();
}

我的问题是当我单击按钮提交表单时,不会调用HttpPost方法。相反,每次都会调用HttpGet方法,导致页面只是重新加载而不是提交。

我做错了什么?

GET

是未指定任何方法时的默认方法。 指定POST方法:

<form id="elementEditForm" class="form-horizontal form-label-left" method="post">

另一种方法。我更喜欢将HTML助手用于表单,因为它在视觉上可以更多地了解表单应该做什么。

@using (Html.BeginForm("Edit","<ControllerName>",FormMethod.Post, new {@id="elementEditForm", @class="form-horizontal form-label-left"}))
{
<input type="hidden" name="returnUrl" value="@ViewBag.returnUrl" />

... my form fields....
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
<button type="submit" form="elementEditForm" class="btn btn-success">Submit</button>
</div>
</div>
}

最新更新