ASP.Net MVC 4 Formulario con 2 botones / acciones de envío

Tengo un formulario en ASP.Net y maquinilla de afeitar.

Necesito tener dos formas de enviar dicho formulario: uno que pase por la acción Edit y otro que pase por la acción Validate .

¿Cómo debo hacer esto?

No me importa usar JavaScript para esto.

EDITAR:

Usando el atributo personalizado obtengo este error.

La solicitud actual de acción ‘Resultados’ en el tipo de controlador ‘InspecoesController’ es ambigua entre los siguientes métodos de acción: 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]) en tipo Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController

Eso es lo que tenemos en nuestras aplicaciones:
Atributo

 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; } } 

Acciones decoradas con ella:

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

HTML / Navaja

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

name atributo de name del botón de enviar debe coincidir con el nombre de acción / método

De esta forma, no es necesario codificar urls en javascript

Puedes hacerlo con jquery, solo pon dos métodos para enviar a direcciones diferentes, por ejemplo con este formulario:

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

puede usar este script (asegúrese de que esté ubicado en la Vista, para usar el atributo Url.Action):

  

Si está trabajando en asp.net con razor de afeitar, y desea controlar el evento de múltiples botones de envío, entonces esta respuesta lo guiará. Permite, por ejemplo, tenemos dos botones, un botón nos redirigirá a “PageA.cshtml” y otro nos redireccionará 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"); } } } 
; ;

Aquí hay una buena explicación: ASP.NET MVC – Varios botones en la misma forma

En 2 palabras:
puedes analizar el valor del botón enviado en tu acción
o
realice acciones por separado con su versión de ActionMethodSelectorAttribute (que personalmente prefiero y sugiero).

   

Con HTML5 puedes usar el button[formaction] :

 

Podemos tener esto de 2 maneras,

O tiene 2 envíos de formularios dentro de la misma Vista y tiene 2 métodos de acción en el controlador, pero deberá enviar los campos requeridos para que se envíen con el formulario que se colocará dentro de

ex se da aquí con código Múltiples formularios en vista asp.net mvc con múltiples botones de envío

O

Haga que 2 o múltiples botones de envío digan btnSubmit1 y btnSubmit2 y verifique en el método de acción en qué botón se hizo clic usando el código

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