2011-11-01 9 views
6

C'è un modo per utilizzare (o qualcosa simular)C'è un modo per usare @ Html.HiddenFor per il modello completo?

@Html.HiddenFor 

per intero il vostro modello.

Così, invece di fare qualcosa di simile:

@Html.HiddenFor(model => Model.Person.Name) 
    @Html.HiddenFor(model => Model.Person.LastName) 
    @Html.HiddenFor(model => Model.Address.Street) 

uso qualcosa di simile (questo esempio non funziona)

@Html.HiddenFor(model => Model) 

ho già cercato per esso sul StackOverflow e Google. ..ma non ho trovato nulla a riguardo.

Ho bisogno di conservare alcuni valori per diversi modelli che non vengono salvati in db, quindi usando solo Html.HiddenPer l'ID non è un'opzione per me.

Grazie in anticipo!

+0

Non si vuole fare questo! Dovresti solo far passare la chiave primaria dell'entità, quindi cercarla sul lato server ... altrimenti il ​​client può cambiare il suo indirizzo ecc. Se non li salvi in ​​DB ma hai bisogno che persistano, usa la sessione o i cookie o localstorage o qualcos'altro invece – Milney

risposta

7

Selezionare le proprietà che si desidera essere in un ingresso nascosto e aggiungere il HiddenInputAttribute nel modello come segue:

public class MyModel 
{ 
    [HiddenInput] 
    public int MyProperty { get; set; } 
} 
+0

@Darin & @ Haythem grazie, testerò entrambe le risposte alla fine di questa settimana! – Gyocol

3

Si può dare un'occhiata allo MVCContrib's Html.Serialize method. È una sorta di emulazione viewstate (e internamente utilizza effettivamente ViewState :-)).

Un approccio alternativo sarebbe semplicemente archiviare un ID univoco come campo nascosto e all'interno dell'azione del controller utilizzare questo id per recuperare il modello corrispondente dall'archivio dati sottostante.

Problemi correlati