2011-10-01 10 views
5

Mam następujący widok-model moim zdaniem MVC3 Razor:Jak wywołać Html.Display dla niestandardowego obiektu, a nie całego modelu?

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

chcę, aby wyświetlić listę wszystkich osób w moim Razor widok jak:

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

@Html.Display lub @Html.DisplayFor wydaje się nie działać na ja ..

Mogę utworzyć osobny wzór ze sztywnymi literami, używając Person jako modelu i zadzwonić pod numer @Html.DisplayForModel, ale czy istnieje sposób, aby przejść bez oddzielnego v iew?

Odpowiedz

15

Utwórz plik częściowego widoku o nazwie Person.cshtml wewnątrz ~/Views/Shared/DisplayTemplates. Zrób silnie wpisane do klasy Person.

Wprowadź w życie strukturę swojego widoku.

Wtedy, gdy nazywają go jak poniżej (na razie), dostaniesz to, czego oczekiwano:

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

wielkie dzięki! Nie potrzebuję niestandardowego szablonu przy okazji, po prostu nie pomyślałem o używaniu '@ Html.DisplayFor (m => person)' bez używania 'm => m. Something' :) – Shaddix

Powiązane problemy