2011-11-01 42 views
6

¿Hay una manera de utilizar (o algo simular)¿Hay alguna forma de usar @ Html.HiddenFor para el modelo completo?

@Html.HiddenFor 

para toda su modelo.

Así que en vez de hacer algo como esto:

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

uso algo como esto (este ejemplo no funciona)

@Html.HiddenFor(model => Model) 

Ya he buscado en Google y stackoverflow. ..pero no han encontrado nada al respecto.

Necesito conservar algunos valores para diferentes modelos que no se guardan en db, por lo que usar solo Html.HiddenPara la ID no es una opción para mí.

¡Gracias de antemano!

+0

Usted no quiere hacer esto! Solo debe aprobar la clave principal de la entidad y luego buscarla en el servidor ... de lo contrario, el cliente puede cambiar su dirección, etc. Si no los guarda en la base de datos pero necesita que persistan, use la sesión o las cookies. o localstorage o algo en su lugar – Milney

Respuesta

7

Seleccione las propiedades que desee estar en un campo oculto y añadir la HiddenInputAttribute en su modelo de la siguiente manera:

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

@Darin & @ Haythem gracias, voy a probar ambas respuestas al final de esta semana! – Gyocol

3

Puede echar un vistazo a MVCContrib's Html.Serialize method. Es una emulación de viewstate sorta (e internamente usa ViewState :-)).

Un enfoque alternativo sería simplemente almacenar una identificación única como un campo oculto y dentro de la acción del controlador use esta identificación para buscar el modelo correspondiente de su almacén de datos subyacente.

Cuestiones relacionadas