EditorTemplate Collection模型类的命名约定

时间:2013-06-05 13:17:48

标签: asp.net-mvc mvc-editor-templates razor-2

我有一个声明为List<MyClass>类型的模型属性。

public class MyModel
{
    List<MyClass> MyProperty { get; set; }
}

我希望能够使用Razor模板显示/编辑属性。我的问题是,我如何命名EditorTemplate视图,以便我可以使用普通语法显示属性:

@model MyModel
@Html.DisplayFor(m => m.MyProperty)

我知道我可以创建一个名为MyClass.cshtml的视图,该视图将用于MyClass类型,但如何为列表创建模板?

1 个答案:

答案 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>
...

在这种情况下,模板引擎不会为集合属性的每个元素呈现模板。它只是将集合本身​​传递给模板。