MVC 預設單一表單僅能送至一個 Action,但實務常需「審核通過/不通過/返回」等多按鈕分流。本文提供三種解法:
<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、邏輯分散。
<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 硬編碼、多語系困難。
<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>
優點:語意清晰、瀏覽器原生支援、無腳本。缺點:舊版瀏覽器不支援。