有次做项目,发现一个问题,不用ajax的话,在一个form里面 怎么写两个提交按钮呢,两个提交按钮跳转到不同的action。通过网页查阅资料,发现一个好用的方法,分享给大家!
后端部分
首先新建一个类,类名 MultiButtonAttribute
/// <summary>
/// 自定义不同按钮选择action
/// </summary>
public class MultiButtonAttribute : ActionNameSelectorAttribute
{
public string Name { get; set; }
public MultiButtonAttribute(string name)
{
this.Name = name;
}
public override bool IsValidName(ControllerContext controllerContext,
string actionName, System.Reflection.MethodInfo methodInfo)
{
if (string.IsNullOrEmpty(this.Name))
{
return false;
}
return controllerContext.HttpContext.Request.Form.AllKeys.Contains(this.Name);
}
}
Controller里的action和前端的 submit按钮的name属性对应
//自定义不同按钮跳转不同方法1
[HttpPost]
[MultiButton("action1")]
public ActionResult GetValueAction()
{
//这里方法名和跳转无关系
return View();
}
//自定义不同按钮跳转不同方法2
[HttpPost]
[MultiButton("action2")]
public ActionResult GetInformationAction()
{
//这里方法名和跳转无关系
return View();
}
前端部分
两个submit按钮的name要和后台标签MultiButton属性里的值对应
<form method="post">
<table>
<tr>
<th>
<input type="submit" id="btn1" value="确定1" name="action1">
</th>
<th>
<input type="submit" id="btn2" value="确定2" name="action2">
</th>
</tr>
</table>
</form>
然后就可以打断点测试了