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

本文关键字:帮助程序 方法 是什么 自定义 对象 Html DisplayFor 覆盖 | 更新日期: 2023-09-27 18:32:01

如果我有一个对象并查看为:

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,而不会影响它处理其他类型的能力?

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

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

但是,LabelFor没有模板选项。

有关更多信息,请参阅Scott Hanselman的这篇博文。