Html.BeginForm后要HTTPGET行动,而不是HttpPost在IE中,罚款Chrome

2019-07-30 23:43发布

我在Razor视图如下:

 @using (Html.BeginForm("Edit", "MyController", FormMethod.Post))
{
    <div class="grid_1">&nbsp;</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>

}

在我的控制器我有

[HttpGet]
public virtual ActionResult Edit(string id)
{
}

[HttpPost]
public virtual ActionResult Edit(ViewModel viewModel)
{
}

在Firefox和Chrome一切工作正常,但在IE时提交表单的HTTPGET动作被解雇,而不是HttpPost。

有调用堆栈或从IE开发者工具控制台没有线索。

任何明显,我很想念?

Answer 1:

您的提交按钮应该真正的提交按钮与type="Submit"

<input id="btnSubmit" type="submit" value="Submit" />

正确提交表单在所有浏览器。

有关进一步的差异该SO问题: 差异<INPUT TYPE = '按钮'/>和<INPUT TYPE = '提交'/>



文章来源: Html.BeginForm Post going to HttpGet action rather than HttpPost in IE, fine in Chrome and Firefox