2011-10-01 13 views
5

tengo la siguiente vista-modelo para mi punto de vista MVC3 Razor:¿Cómo llamar a Html.Display para un objeto personalizado, no a todo el Modelo?

public class UserProfileModel 
{ 
    public Person[] Persons { get; set; } 
    //some other fields 
} 

Quiero mostrar todas las personas en mi opinión, la maquinilla de afeitar como:

foreach (var person in Model.Persons) 
{ 
<div> 
    @* some custom formatting *@ 
    @Html.Display(person) 
</div> 
} 

@Html.Display o @Html.DisplayFor parece no funcionar para yo ..

Puedo crear una vista separada de tipo de pie con Person como modelo y llamar al @Html.DisplayForModel allí, pero ¿hay una manera de hacerlo sin un v por separado? iew?

Respuesta

15

Cree un archivo de vista parcial llamado Person.cshtml dentro de ~/Views/Shared/DisplayTemplates. Hazlo fuertemente tipado a la clase Person.

Implemente la estructura de su vista.

Entonces, cuando usted lo llama, como a continuación (en su caso), obtendrá lo que se esperaba:

foreach (var person in Model.Persons) 
{ 
<div> 
    @* some custom formatting *@ 
    @Html.DisplayFor(m => person) 
</div> 
} 
+2

muchas gracias! Por cierto, no necesito una plantilla personalizada, simplemente no he pensado en usar '@ Html.DisplayFor (m => persona)' sin usar 'm => m.Something' :) – Shaddix

Cuestiones relacionadas