我有一个声明为List<MyClass>
类型的模型属性。
public class MyModel
{
List<MyClass> MyProperty { get; set; }
}
我希望能够使用Razor模板显示/编辑属性。我的问题是,我如何命名EditorTemplate视图,以便我可以使用普通语法显示属性:
@model MyModel
@Html.DisplayFor(m => m.MyProperty)
我知道我可以创建一个名为MyClass.cshtml的视图,该视图将用于MyClass
类型,但如何为列表创建模板?
答案 0 :(得分:7)
您可以使用[UIHint]
属性:
public class MyModel
{
[UIHint("TemplateForTheList")]
public List<MyClass> MyProperty { get; set; }
}
或指定模板名称作为DisplayFor
助手的第二个参数:
@model MyModel
@Html.DisplayFor(m => m.MyProperty, "TemplateForTheList")
然后有一个TemplateForTheList.cshtml
模板:
@model List<MyClass>
...
在这种情况下,模板引擎不会为集合属性的每个元素呈现模板。它只是将集合本身传递给模板。