Ecco un modo veramente bello e semplice di farlo con istruzioni davvero facili da seguire usando un MultiButtonAttribute personalizzato:
http://blog.maartenballiauw.be/post/2009/11/26/Supporting-multiple-submit-buttons-on-an-ASPNET-MVC-view.aspx
In sintesi, rendere il vostro presentare pulsanti come questo:
<input type="submit" value="Cancel" name="action" />
<input type="submit" value="Create" name="action" />
Le vostre azioni come questa:
0.123.
[HttpPost]
[MultiButton(MatchFormKey="action", MatchFormValue="Cancel")]
public ActionResult Cancel()
{
return Content("Cancel clicked");
}
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "Create")]
public ActionResult Create(Person person)
{
return Content("Create clicked");
}
E creare questa classe:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultiButtonAttribute : ActionNameSelectorAttribute
{
public string MatchFormKey { get; set; }
public string MatchFormValue { get; set; }
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request[MatchFormKey] != null &&
controllerContext.HttpContext.Request[MatchFormKey] == MatchFormValue;
}
}
Perché non basta aggiungere eventi onclick a questi pulsanti che vanno alla propria chiamata AJAX, che andranno ai loro metodi appropriati? es .: ''? – ragerory