2011-10-01 14 views
5

ho la seguente vista-modello per mio punto di vista MVC3 Razor:Come chiamare Html.Display per un oggetto personalizzato, non l'intero modello?

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

Voglio visualizzare tutte le persone a mio avviso Razor come:

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

@Html.Display o @Html.DisplayFor sembra non funzionare per io ..

Posso creare una vista distinta a stipe usando Person come modello e chiamare @Html.DisplayForModel lì, ma c'è un modo per andare senza una v separata IEW?

risposta

15

Creare un file di visualizzazione parziale denominato Person.cshtml all'interno di ~/Views/Shared/DisplayTemplates. Inseriscilo con forza nella classe Person.

Implementare la struttura della visualizzazione.

Poi, quando lo si chiama come qui di seguito (sul tuo caso), otterrete quello che vi aspettavate:

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

Thanks a lot! A proposito, non ho bisogno di un modello personalizzato, semplicemente non ho pensato di usare '@ Html.DisplayFor (m => person)' senza usare 'm => m.Something' :) – Shaddix

Problemi correlati