我在Razor View 中具有以下内容:
@using (Html.BeginForm("Edit", "MyController", FormMethod.Post))
{
<div class="grid_1"> </div>
<div id="ValSummary"> @Html.ValidationSummary(false)</div>
@Html.EditorFor(x => x.Role, MVC.Shared.Views.EditorTemplates.KeyValuePairSelectList, new { SelectListOptions = Model.RoleSelectList })<br /><br />
@Html.EditorFor(x => x.Trust, MVC.Shared.Views.EditorTemplates.KeyValuePairSelectList, new { SelectListOptions = Model.TrustSelectList.OrderBy(x => x.Text) })<br /><br />
@Html.EditorFor(x => x.GmcCode)<br /><br />
<div class="createbutton">
<input id="btnGoBack" type="button" value="Back"/>
<input id="btnSubmit" type="button" value="Submit" />
</div>
}
在我的 Controller 中
[HttpGet]
public virtual ActionResult Edit(string id)
{
}
[HttpPost]
public virtual ActionResult Edit(ViewModel viewModel)
{
}
在Firefox和Chrome中,一切正常,但在IE中,提交表单后,将触发HttpGet操作而不是HttpPost。
在调用堆栈或IE开发人员工具控制台中没有任何线索。
有什么明显的我想念的东西吗?
最佳答案
您的Submit按钮应该是带有type="Submit"
的真实submit button
<input id="btnSubmit" type="submit" value="Submit" />
在所有浏览器中正确提交表单。
有关其他差异,请参见此SO问题:Difference between <input type='button' /> and <input type='submit' />
关于c# - Html.BeginForm Post将转到HttpGet操作,而不是IE中的HttpPost,在Chrome和Firefox中效果很好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11966345/