1. 程式人生 > >MVC一個form內兩個submit按鈕跳轉Controller內不同的Action方法

MVC一個form內兩個submit按鈕跳轉Controller內不同的Action方法

有次做專案,發現一個問題,不用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>

然後就可以打斷點測試了