MVC2: Come posso leggere i valori di controllo per un collegamento azione?
-
19-09-2019 - |
Domanda
sto passando in qualche informazioni del modello ad un ActionLink, ma mi piacerebbe anche a fornire l'azione con i valori di alcuni input sulla pagina. Per esempio, se ho avuto qualcosa di simile:
<input Name="MyInput" />
<%: Html.ActionLink("MyAction", "MyController", Model.Value);
Mi piacerebbe l'azione di essere a conoscenza di entrambi Model.Value (che è passato in via parametro), e il valore della myInput. Normalmente avrei usato un FormCollection, ma non posso in questo caso dal momento che non sto facendo un invio.
Così come posso passare il valore di myInput a myAction? Avrei dovuto aggiungere una proprietà denominata myInput al mio modello? Supponendo che avrebbe funzionato, c'è un modo più semplice, o almeno uno che non comporta la modifica del modello?
Soluzione
Non v'è alcun modo per fare questo in HTML, quindi non c'è un modo per fare questo in ASP.NET MVC.
Ci sono due possibili soluzioni a questo che è possibile scegliere tra:
-
tale uso JavaScript che, quando l'utente modifica la casella di testo si modifica dinamicamente il valore del tag di ancoraggio per includere ciò che digitato. Non è possibile utilizzare ASP.NET di routing per questo, perché che gira sul server e è necessario il codice lato client.
-
Do una forma presentare invece di un link. Questo è il metodo consigliato in HTML. Quando l'utente sta presentando i dati, dovrebbe essere in una forma. Avvolgere il tutto in un tag form e inserire la casella di testo e un pulsante in là. Impostare l'azione del modulo per essere l'URL che si desidera inviare a.
Questa è la stessa risposta come ho messo in questa domanda , anche se il richiedente dell'altro domanda potrebbe avere avuto un'idea leggermente diversa.
Altri suggerimenti
ho deciso che probabilmente avrei potuto leggere i valori della casella di testo tramite Javascript (probabilmente avrei utilizzato JQuery), e li passati come parametri come parte di un tipo anonimo (invece di utilizzare Model.Value). Tuttavia, ho deciso di passare dall'utilizzo di un collegamento azione per fare solo una forma presentare e utilizzando il FormCollection. E 'appena fatto più senso con la pagina che stavo costruendo.