Как вызвать Html.Display для пользовательского объекта, а не для всей модели? - PullRequest
5 голосов
/ 01 октября 2011

У меня есть следующая модель для моего вида MVC3 Razor:

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

Я хочу отобразить всех людей в моем окне Razor как:

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

@Html.Display или @Html.DisplayFor, кажется, не работает для меня ..

Я могу создать отдельный вид со строгой типизацией, используя Person в качестве модели, и вызвать там @Html.DisplayForModel, но есть ли способ обойтись без отдельного представления?

1 Ответ

15 голосов
/ 01 октября 2011

Создать файл частичного просмотра с именем Person.cshtml внутри ~/Views/Shared/DisplayTemplates. Сделайте его строго типизированным до Person класса.

Реализуйте структуру вашего представления.

Затем, когда вы назовете это как ниже (для вашего случая) , вы получите то, что ожидали:

foreach (var person in Model.Persons)
{
<div>
    @* some custom formatting *@
    @Html.DisplayFor(m => person)
</div>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...