Probier es so:
[HttpPost]
public ActionResult CheckData(string btnSearch)
{
if (btnSearch == "Yes") {
// Der Ja-Schaltfläche wurde geklickt
} else if (btnSearch == "No") {
// Die Nein-Schaltfläche wurde geklickt
}
return RedirectToRoute("detailform");
}
Aber es ist normalerweise besser, nicht gegen den Text der Schaltfläche zu testen, sondern gegen einen vordefinierten Wert, da sich der Text ändern könnte und Ihre Controller-Aktion brechen könnte:
Ja
Nein, das möchte ich nicht tun
und dann:
[HttpPost]
public ActionResult CheckData(string btnSearch)
{
if (btnSearch == "ja") {
// Die Ja-Schaltfläche wurde geklickt
} else if (btnSearch == "nein") {
// Die Nein-Schaltfläche wurde geklickt
}
return RedirectToRoute("detailform");
}
Und es gibt sogar einen besseren Ansatz, bei dem Sie je nach geklickter Schaltfläche zu einer anderen Controller-Aktion weiterleiten können. Sieh dir diesen Artikel
an.
Sie könnten ein Formular haben, dessen Aktion Action
entspricht:
@using (Html.BeginForm("Action", "Post"))
{
}
und dann 2 Controller-Aktionen im entsprechenden Controller haben:
public class PostController : Controller
{
[HttpParamAction]
[HttpPost]
public ActionResult SaveDraft(...)
{
// ...
}
[HttpParamAction]
[HttpPost]
public ActionResult Publish(...)
{
// ...
}
}
und hier ist die Definition des benutzerdefinierten Aktionsnamen-Selektors:
public class HttpParamActionAttribute : ActionNameSelectorAttribute
{
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
{
return true;
}
if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
{
return false;
}
var request = controllerContext.RequestContext.HttpContext.Request;
return request[methodInfo.Name] != null;
}
}
Je nachdem, welche Schaltfläche geklickt wird, wird die entsprechende Controller-Aktion aufgerufen.