2010-08-13 20 views
6

È possibile inviare lo stesso modulo a diversi controller?MVC invia il modulo a diversi controller

Ogni pagina potrebbe essere posta solo per formare un URL di azione, ma potrebbe essere un po 'come posso dire al pulsante su quale modulo di URL deve andare?

, ad esempio, ho un modulo e due pulsanti di invio, un pulsante invierà il modulo a un controller/url (ad esempio/azione/vista) altro pulsante invia un modulo a un altro controller/url (ad esempio/action/anothervew).

+0

Come per il commento di @ Darin, se una risposta risolve il problema, la risposta potrebbe essere accettata. grazie –

risposta

4

È possibile eseguire questa operazione, utilizzare JQuery (o solo javascript) per collegare una funzione all'evento onclick dei pulsanti. Quindi utilizzare quella funzione per modificare l'URL a cui il modulo invia e quindi inviare il modulo.

JQuery sarebbe qualcosa di simile:

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

In tal caso, il collegamento Modello predefinito funziona ancora e posso raccogliere i valori immessi nel modulo, nei miei metodi di azione? – Biki

+0

Non ci dovrebbero essere motivi per cui questo non funzionerebbe in nessuna delle azioni che pubblichi. ModelBinding esamina solo i dati del modulo e tenta di trovare le proprietà corrispondenti sul modello di input –

2

Sarà necessario utilizzare javascript per questo. Quando si fa clic sul pulsante, il javascript modifica la proprietà dell'azione del modulo sul controller appropriato e quindi invia il modulo.

1

Abbiamo fatto questo prima di usare javascript, come menzionato in altre risposte, ed è probabilmente il modo corretto di andare. Un'alternativa, tuttavia, è di pubblicare su un unico metodo di controllo che contiene la logica per decidere dove inviare i dati del modulo.

In pratica, si invia il modulo al controller e si invia nuovamente il messaggio in base al testo o all'ID del pulsante facendo clic su un'istruzione if nel corpo dell'azione del controller.