2011-12-15 14 views
9

Come posso impostare un valore sul mio modello usando jQuery?imposta un valore sul modello usando jQuery

Ho un campo di input (che è id = "commento") e voglio inserire il testo in esso in @Model.Comment utilizzando jQuery.

qualcosa di simile: @Model.Comment = $("#comment").val();

risposta

3

Come posso impostare un valore per il mio modello utilizzando jQuery?

Questo non ha alcun senso. jQuery viene eseguito sul client. Il modello vive sul server. Quindi, quando jQuery viene eseguito sul client, il codice lato server e il modello sono morti da tempo.

Che cosa si potrebbe fare da parte del cliente è inviare una richiesta AJAX al server passandogli il valore del campo di ingresso in modo che il server possa prendere rispettive azioni e aggiornare il modello:

$.ajax({ 
    url: '@Url.Action("foo")', 
    type: 'POST', 
    data: { comment: $("#comment").val() }, 
    function(result) { 
     // TODO: process the server results 
    } 
}); 

Qualora, in Server si avrà un'azione di controllo Foo che verrà richiamato:

[HttpPost] 
public ActionResult Foo(string comment) 
{ 
    // TODO: do something with the value of the comment and return a result 
    // to the client 
    ... 
} 
+0

a me sembra che la risposta di Tyler è la scelta migliore. Passo regolarmente il modello a una vista e poi dalla vista al metodo di un controller. –

+0

jQuery viene eseguito sul client, è vero. Se devo aggiornare solo un file del modello nel database in un dato momento, (Si veda il modo di modalità di modifica di Skype per il profilo utente) Vorrei fare una chiamata Ajax con la figura modificata e aggiornare il valore, ma il rispettivo il campo nel modello non è ancora stato aggiornato. Devo aggiornarlo dal lato client senza chiamare nuovamente il server. Penso che questa domanda originale sia anch'essa dello stesso tipo. Per favore consigliami. Grazie –

35

Lungi da me essere in disaccordo con Darin (! ha risposto mezzo alle mie domande su qui), ma sarà messo questo in su nel caso in cui il PO o chiunque altro lo trova utile.

Dando un attributo HTML a un valore del modello:

@Html.HiddenFor(x => x.Object.Id, new { id = "Id" }) 

È possibile quindi impostare il valore con jQuery in questo modo

$("#Id").val(5); // or whatever value 
+0

Lifesaver, questo è meravigliosamente semplice! –

+0

semplice e intelligente, bello! –

+0

Ottima risposta. Molto utile. – giparekh

Problemi correlati