Html 与MVC 3在同一表单上有2个提交按钮。IE 9中只有一个提交按钮工作
我给提交按钮一个名称,然后在控制器方法中检查提交的值。当我单击register按钮时,它并没有触发服务器上的action方法。这在chrome和IE10及以上版本中运行良好,但在IE9中不起作用Html 与MVC 3在同一表单上有2个提交按钮。IE 9中只有一个提交按钮工作,html,asp.net-mvc,asp.net-mvc-3,internet-explorer-9,Html,Asp.net Mvc,Asp.net Mvc 3,Internet Explorer 9,我给提交按钮一个名称,然后在控制器方法中检查提交的值。当我单击register按钮时,它并没有触发服务器上的action方法。这在chrome和IE10及以上版本中运行良好,但在IE9中不起作用 <% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %> <input type="submit" name="PostValue" value="UploadImage" /> <input ty
<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" name="PostValue" value="UploadImage" />
<input type="submit" name="PostValue" value="Register" />
<% Html.EndForm(); %>
我在这方面没有经验。 但如果您不想使用同名的提交按钮,则有一个解决方案:
@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);
}
}
@使用(Html.BeginForm(“PostNews”,“Home”,FormMethod.Post))
{
}
公共类HomeController:控制器
{
[HttpPost、ActionName(“PostNews”)、ActionRequired(“submit.Publish”)]
公共行动结果发布新闻()
{
ViewBag.Message=“您的应用程序描述页。”;
返回视图(…);
}
[HttpPost、ActionName(“PostNews”)、ActionRequired(“submit.Save”)]
公共操作结果保存新闻()
{
返回视图(…);
}
}
公共类ActionRequiredAttribute:ActionMethodSelectorAttribute
{
私有只读字符串_submitButtonName;
public ActionRequiredAttribute(字符串submitButtonName)
{
_submitButtonName=submitButtonName;
}
公共覆盖布尔值是有效的请求(ControllerContext ControllerContext,MethodInfo MethodInfo)
{
var actionRequired=controllerContext.RequestContext.HttpContext.Request.Form[_submitButtonName];
return!string.IsNullOrEmpty(actionRequired);
}
}
谢谢您的回复。但在我的例子中,我不能使用2个actionresult方法。我必须对两个按钮使用相同的操作。