MVC一個form內兩個submit按鈕跳轉Controller內不同的Action方法
阿新 • • 發佈:2019-02-07
有次做專案,發現一個問題,不用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>
然後就可以打斷點測試了