如何为自定义对象调用Html.Display,而不是整个模型?

Sha*_*dix 6 c# asp.net-mvc razor asp.net-mvc-3

我的MVC3 Razor视图有以下视图模型:

 public class UserProfileModel
 {
     public Person[] Persons { get; set; }
     //some other fields
 }
Run Code Online (Sandbox Code Playgroud)

我想在Razor视图中显示所有人:

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

@Html.Display@Html.DisplayFor似乎不适合我..

我可以使用Person模型创建一个单独的stongly类型视图并@Html.DisplayForModel在那里调用,但有没有办法在没有单独的视图的情况下去?

tug*_*erk 15

创建一个名为Person.cshtmlinside 的局部视图文件~/Views/Shared/DisplayTemplates.让它强烈打字到Person课堂.

实现视图的结构.

然后,当你打电话给下面(在你的情况下),你会得到你所期望的:

foreach (var person in Model.Persons)
{
<div>
    @* some custom formatting *@
    @Html.DisplayFor(m => person)
</div>
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢!顺便说一下,我不需要自定义模板,我只是没有想过使用`@ Html.DisplayFor(m => person)`而不使用`m => m.Something` :) (2认同)