【问题标题】:Custom DisplayName for Parent Object's same property父对象相同属性的自定义显示名称
【发布时间】:2016-02-02 14:56:09
【问题描述】:

我有一个具有相同类型属性的模型类(用于创建层次结构):

public class OrganizationalChart : Model
{
    public Guid? ParentId { set; get; }
    public virtual OrganizationalChart Parent { set; get; }
    public string Name { set; get; }
}

在我的Razor 查看文件中:

@Html.DisplayFor(modelItem => item.Name)
@Html.DisplayFor(modelItem => item.Parent.Name)

这两行显然都打印Name。我使用[Display(Name="Role Name")]时的情况是一样的。

我想要的功能是能够为当前对象的Name 属性和父对象的Name 属性设置不同的显示名称。

有没有办法在不使用自定义HTML 标签的情况下做到这一点?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor


    【解决方案1】:

    没有。无法覆盖子实例上的显示名称。但是,根据您的用例,可能会有一些选项。例如,如果您使用Html.LabelFor,它需要一个允许您指定标签文本的参数:

    @Html.LabelFor(modelItem => item.Name)
    @Html.LabelFor(modelItem => item.Parent.Name, "Parent Name")
    

    Html.DisplayNameFor 在这种情况下使用没有意义,因为它所做的只是输出一个简单的字符串(显示名称)。结果,没有任何“自定义 HTML”;你可以硬编码你想要的名字。 Html.DisplayFor 根本不显示属性名称,所以我不确定您对此有何期待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2014-08-13
      • 2016-10-24
      • 2016-07-26
      • 1970-01-01
      • 2016-08-23
      • 2016-01-04
      相关资源
      最近更新 更多