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);
}
}