2010-08-13 23 views
6

¿Es posible publicar el mismo formulario en diferentes controladores?MVC enviar formulario a diferentes controladores

Cada página podría publicarse solo para formar la url de acción, pero puede que haya alguna forma en que pueda decir al botón a qué url debe ir la forma.

por ejemplo tengo un formulario y dos botones de envío, un botón publicará el formulario en un controlador/url (por ejemplo/acción/vista) y envía el formulario a otro controlador/url (por ejemplo/action/anothervew).

+0

Según el comentario de @Darin, si una respuesta resuelve su problema, ¿podría aceptar esa respuesta? gracias –

Respuesta

4

Definitivamente puede hacer esto, use JQuery (o simplemente javascript) para adjuntar una función al evento onclick de los botones. Luego use esa función para cambiar la URL a la que se envía el formulario y luego envíe el formulario.

jQuery sería algo así como:

$('#button1').onclick(function(){ $(this).action = url1; $(document).submit();}); 
$('#button2').onclick(function(){ $(this).action = url2; $(document).submit();}); 
+0

En ese caso, ¿sigue funcionando el enlace de modelo predeterminado y puedo recopilar los valores ingresados ​​en el formulario, en mis métodos de acción? – Biki

+0

No debería haber ninguna razón por la cual esto no funcionaría en ninguna de las acciones en las que publicas. ModelBinding solo mira los datos del formulario e intenta encontrar propiedades coincidentes en su modelo de entrada –

2

Usted tendrá que usar javascript para esto. Cuando se hace clic en el botón, el javascript modifica la propiedad de acción del formulario en el controlador apropiado y luego envía el formulario.

1

Hemos hecho esto antes de usar javascript, como se menciona en otras respuestas, y esa es probablemente la forma correcta de hacerlo. Una alternativa, sin embargo, es publicar en un solo método de controlador que contiene lógica para decidir a dónde enviar los datos del formulario.

Efectivamente, envíe el formulario al controlador y vuelva a enviar los datos según el texto o la identificación del botón al que se hizo clic utilizando una instrucción if en el cuerpo de la acción del controlador.

Cuestiones relacionadas