Html.BeginForm Post going to HttpGet action rather

2019-04-26 21:20发布

I have the following in my Razor view:

 @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>

}

In my controller I have

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

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

In Firefox and Chrome everything works fine but in IE when the form is submitted the HttpGet action is being fired rather than the HttpPost.

There are no clues in the call stack or from the IE developer tools console.

Anything obvious that I am missing?

1条回答
Luminary・发光体
2楼-- · 2019-04-26 21:53

Your Submit button should a real submit button with type="Submit"

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

to submit the form correctly in all browsers.

See this SO questions for further differences: Difference between <input type='button' /> and <input type='submit' />

查看更多
登录 后发表回答