Modulo ASP.Net MVC 4 con 2 pulsanti / azioni di invio

Ho un modulo in ASP.Net e razor.

Devo avere due modi per inviare detto modulo: uno che passa attraverso l’azione Edit e un altro che passa attraverso l’azione Validate .

Come dovrei andare a fare questo?

Non mi dispiace usare JavaScript per questo.

MODIFICARE:

Usando l’attributo personalizzato ottengo questo errore.

L’attuale richiesta di azione “Resultados” sul tipo di controllore “InspecoesController” è ambigua tra i seguenti metodi di azione: System.Web.Mvc.ActionResult Validar (System.Collections.Generic.ICollection 1[Waveform.IEP.Intus.Server.Web.ViewModels.ResultadoViewModel]) on type Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController System.Web.Mvc.ActionResult Resultados(System.Collections.Generic.ICollection 1 [Waveform.IEP.Intus.Server.Web.ViewModels. ResultadoViewModel]) sul tipo Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController

Questo è quello che abbiamo nelle nostre applicazioni:
Attributo

 public class HttpParamActionAttribute : ActionNameSelectorAttribute { public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) { if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase)) return true; var request = controllerContext.RequestContext.HttpContext.Request; return request[methodInfo.Name] != null; } } 

Azioni decorate con esso:

 [HttpParamAction] public ActionResult Save(MyModel model) { // ... } [HttpParamAction] public ActionResult Publish(MyModel model) { // ... } 

HTML / Razor

 @using (@Html.BeginForm()) {    } 

name attributo name del pulsante submit deve corrispondere al nome dell’azione / metodo

In questo modo non hai gli URL hard-code in javascript

Puoi farlo con jquery, basta inserire due metodi per inviare a URL diversi, ad esempio con questo modulo:

 
<%-- form data inputs here ---%>

puoi usare questo script (assicurati che si trovi nella vista, per usare l’attributo Url.Action):

  

Se lavori in asp.net con il razor e vuoi controllare più eventi pulsante di invio, allora questa risposta ti guiderà. Per esempio abbiamo due pulsanti, un pulsante ci reindirizzerà a “PageA.cshtml” e altri ci reindirizzeranno a “PageB.cshtml”.

 @{ if (IsPost) { if(Request["btn"].Equals("button_A")) { Response.Redirect("PageA.cshtml"); } if(Request["btn"].Equals("button_B")) { Response.Redirect("PageB.cshtml"); } } } 
; ;

Ecco una buona spiegazione: ASP.NET MVC – Pulsanti multipli nella stessa forma

In 2 parole:
puoi analizzare il valore del pulsante inviato in azione
o
fai azioni separate con la tua versione di ActionMethodSelectorAttribute (che preferisco e suggerisco personalmente).

   

Con HTML5 puoi usare il button[formaction] :

 

Possiamo avere questo in 2 modi,

O hanno 2 invii di moduli nella stessa vista e 2 metodi di azione sul controller, ma è necessario che i campi richiesti siano inviati con il modulo da inserire all’interno

ex è qui indicato con codice Multiple forms in vista asp.net mvc con più pulsanti di invio

O

Avere 2 o più pulsanti di invio dire btnSubmit1 e btnSubmit2 e controllare il metodo Action su quale pulsante è stato fatto clic usando il codice

 if (Request.Form["btnSubmit1"] != null) { // } if (Request.Form["btnSubmit2"] != null) { // }