首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 單一表單多個送出按鈕處理:三種實用模式比較

     編輯:關於ASP.NET

MVC 預設單一表單僅能送至一個 Action,但實務常需「審核通過/不通過/返回」等多按鈕分流。本文提供三種解法:

方法一:客戶端腳本動態切換 Action URL

<input type="submit" value="審核通過" onclick='this.form.action="<%=Url.Action("Action1")%>";' />
<input type="submit" value="審核不通過" onclick='this.form.action="<%=Url.Action("Action2")%>";' />
<input type="submit" value="返回" onclick='this.form.action="<%=Url.Action("Action3")%>";' />

優點:直觀、Action 邏輯完全分離。缺點:相依 JavaScript、邏輯分散。

方法二:伺服器端依按鈕 name/value 判斷

<input type="submit" name="action" value="審核通過" />
<input type="submit" name="action" value="審核不通過" />
<input type="submit" name="action" value="返回" />
public ActionResult Handle(string action)
{
    switch (action)
    {
        case "審核通過": return Approve();
        case "審核不通過": return Reject();
        case "返回": return RedirectToAction("Index");
    }
    return View();
}

優點:單一 Action 集中處理、無 JS 相依。缺點:value 硬編碼、多語系困難。

方法三:使用 FormMethod 與多個表單(HTML5 formaction/formmethod 屬性)

<form asp-action="Index" method="post">
  <input type="submit" name="action" value="通過" formmethod="post" formaction="/Home/Approve" />
  <input type="submit" name="action" value="拒絕" formmethod="post" formaction="/Home/Reject" />
</form>

優點:語意清晰、瀏覽器原生支援、無腳本。缺點:舊版瀏覽器不支援。

建議選擇

  • 簡單專案/相容舊瀏覽器 → 方法二。
  • 現代專案、重視語意 → 方法三。
  • Action 邏輯差異極大 → 方法一。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved