2 кнопки отправки в одной форме с MVC 3. В IE 9 работает только одна кнопка отправки

Я дал кнопкам отправки имя, а затем проверил отправленное значение в методе контроллера. Когда я нажимаю кнопку регистрации, это не вызывает метод действия, который находится на сервере. Это работает нормально с Chrome и IE 10 и выше, он не работает в IE9.

<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" name="PostValue" value="UploadImage" />
<input type="submit" name="PostValue" value="Register" />
<% Html.EndForm(); %>

1 ответ

Я не испытал на этом. Но есть решение этой проблемы, если вы не хотите использовать кнопки отправки с тем же именем:

@using (Html.BeginForm("PostNews", "Home", FormMethod.Post))
{
    <input type="submit" name="submit.Publish" value="Publish News" />
    <input type="submit" name="submit.Save" value="Save News" />
}

public class HomeController : Controller
{
    [HttpPost, ActionName("PostNews"), ActionRequired("submit.Publish")]
    public ActionResult PublishNews()
    {
        ViewBag.Message = "Your app description page.";

        return View(...);
    }

    [HttpPost, ActionName("PostNews"), ActionRequired("submit.Save")]
    public ActionResult SaveNews()
    {
        return View(...); 
    }
}

public class ActionRequiredAttribute : ActionMethodSelectorAttribute
{
    private readonly string _submitButtonName;
    public ActionRequiredAttribute(string submitButtonName)
    {
        _submitButtonName = submitButtonName;
    }
    public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
    {
        var actionRequired = controllerContext.RequestContext.HttpContext.Request.Form[_submitButtonName];
        return !string.IsNullOrEmpty(actionRequired);
    }
}
Другие вопросы по тегам