我有一個具有相同值的多個提交按鈕的單一表單。例如:「繼續」。ASP.Net MVC - 提交具有相同值的按鈕
現在,在ASP.Net MVC的後控制器方法中,我怎麼知道哪個按鈕被按下?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DepartmentDetails(string submitButton)
submitButton的值將始終爲「繼續」。我如何知道哪個按鈕被按下。
我已爲每個按鈕提供了單獨的ID。
謝謝。
我有一個具有相同值的多個提交按鈕的單一表單。例如:「繼續」。ASP.Net MVC - 提交具有相同值的按鈕
現在,在ASP.Net MVC的後控制器方法中,我怎麼知道哪個按鈕被按下?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DepartmentDetails(string submitButton)
submitButton的值將始終爲「繼續」。我如何知道哪個按鈕被按下。
我已爲每個按鈕提供了單獨的ID。
謝謝。
試試這個:
<% using (Html.BeginForm())
{ %>
<input type="submit" value="Submit" name="Submit1Button" />
<input type="submit" value="Submit" name="Submit2Button" />
<%} %>
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection values)
{
string buttonName = values.AllKeys.Where((n) => n.EndsWith("Button")).SingleOrDefault();
return View();
}
}
謝謝。有用。 – 2009-12-29 05:39:33
,豈不更有意義,打破你的頁面分爲兩個不同的形式?
然後,您可以使用Html.BeginForm HtmlHelper方法的參數爲每個表單指定不同的Controller(s)Action方法。
我意識到這個問題是古老的,但只是碰到它,所以認爲我會回答!
這就是我們使用:
/// <summary>
/// Attribute for Controller methods to decide whether a particular button
/// was clicked and hence whether the method can handle the action.
/// </summary>
public class IfButtonClickedAttribute : ActionMethodSelectorAttribute
{
private readonly IEnumerable<string> _buttonNames;
public IfButtonClickedAttribute(params string[] buttonNames)
{
_buttonNames = buttonNames;
}
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
if (controllerContext.HttpContext.Request.HttpMethod != "POST")
return false;
foreach (string buttonName in _buttonNames)
{
//this first test is for buttons or inputs that have the actual name specified
if (controllerContext.HttpContext.Request.Form[buttonName] != null)
return true;
}
return false;
}
}
然後你的行動你去:
[ActionName("SaveItem"), IfButtonClicked("SaveAsDraft")]
public ActionResult SaveAsDraft(){ ... }
[ActionName("SaveItem"), IfButtonClicked("SaveAsPublished")]
public ActionResult SaveAsPublished(){ ... }
你具有相同值的兩個按鈕,但你希望他們做不同的事情?這不會混淆用戶嗎?給按鈕賦予不同的值有什麼問題? – DOK 2009-12-28 17:23:58
'ID'無關緊要,'Name'是最重要的。那是不同的價值?這聽起來像可能有一個簡單的方法來尋找你想要的東西。提供更多的細節可能會有幫助。 – 2009-12-28 17:30:47
請發佈您的HTML。 – 2009-12-28 17:39:01