覆盖Html.DisplayFor<>的正确方法是什么?自定义对象的助手

时间:2013-09-19 09:44:56

标签: c# asp.net-mvc razor html-helper

如果我有一个对象和视图:

public MyCustomerObject
{
    public int Id {get;set;}
    public string Label {get;set;}
    Public string Value {get;set;}
}

@model IEnumerable<MyCustomObject>

@foreach (var item in Model)
{
    @Html.LabelFor(m => item)
    @Html.DisplayFor(m => item)
}

覆盖LabelFor<>DisplayFor<>扩展程序的正确方法是什么,以允许我以默认方式处理MyCustomObject,而不会影响其处理其他方式的能力类型应该是什么?

1 个答案:

答案 0 :(得分:3)

在视图文件夹中创建名为DisplayTemplates的文件夹。创建一个名为MyCustomObject.cshtml的视图,其中MyCustomObject为模型。现在,当您使用DisplayFor时,MVC将使用此视图。 EditorFor的计数相同,文件夹的名称应为EditorTemplates

但是,

LabelFor没有模板选项。

有关更多信息,请参阅Scott Hanselman撰写的this blogpost