我知道这已被多次询问过。但到目前为止,我还没有找到可行的解决方案。
我在视图中有以下代码:
@using (Html.BeginForm("RoleEdit", "AccountRoles", FormMethod.Post, new { id = "updaterole" }))
{
<button name="mySubmit" formaction="@Url.Action("SetDefaultRole", "AccountRoles")" value="MakeDefault" class="button small">Make Default</button>
...
other code
...
<button type="submit" class="button small" value="save" name="save" id="save">@Resources.DashBoardTags.UpdateRoleTag</button>
}
在控制器中:
[HttpPost]
public ActionResult SetDefaultRole()
{
return View();
}
和
[HttpPost]
public ActionResult RoleEdit(List<UserRole> userRole, string mySubmit)
{
if (mySubmit == "Save Draft")
{
//save draft code here
}
else if (mySubmit == "Publish")
{
//publish code here
}
}
代码执行时:
单击第一个提交按钮时,它会忽略SetDefaultRole函数并执行RoleEdit函数。
RoleEdit函数值mySubmit为null。
请出示我的方式错误!!!!
我查看了提议的解决方案:Proposed Solution
由此我创建了一个名为MultipleButton的属性扩展并更改了我的代码,以便代码现在看起来像这样:
查看:
@using (Html.BeginForm("RoleEdit", "AccountRoles", FormMethod.Post, new { id = "updaterole" }))
{
<button value="SetDefaultRole" name="action:SetDefaultRole" class="button small" formmethod="post">Make Default</button>
...
other code
...
<button value="RoleEdit" name="mySubmit:RoleEdit" class="button small" formmethod="post">@Resources.DashBoardTags.UpdateRoleTag</button>
}
控制器
[HttpPost]
[MultipleButton(Name= "action", Argument = "SetDefaultRole")]
public ActionResult SetDefaultRole()
{
return View();
}
[HttpPost]
[MultipleButton(Name = "action", Argument = "RoleEdit")]
public ActionResult RoleEdit(List<UserRole> userRole)
{
return View();
}
在新扩展中,执行上面的Proposed Solution链接中显示的MultipleButtonAttribute,以下代码行始终返回空值:
controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
任何人都可以提供帮助。
答案 0 :(得分:3)
您可以从下面的名称标签中识别您的按钮,您需要在控制器中进行检查
if (Request.Form["mySubmit"] != null)
{
//Write your code here
}
else if (Request.Form["save"] != null)
{
//Write your code here
}
或尝试;
[HttpPost]
public ActionResult RoleEdit(List<UserRole> userRole, FormCollection fc)
{
if (fc["mySubmit"] != null)
{
//save draft code here
}
else if (fc["mySubmit"] != null)
{
//publish code here
}
}