父对象的自定义DisplayName的相同属性

时间:2016-02-02 14:56:10

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

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

declare $found int;
set $found = null;
set $found= (select id FROM table_name WHERE value = "value1" and name = "primary" limit 1);

if ($found is null) then
SELECT * FROM table_name WHERE value = "value1" and name = "secundary";
else
SELECT * FROM table_name WHERE value = "value1" and name = "primary";
end if;

在我的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代码的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

没有。无法覆盖子实例上的显示名称。但是,根据您的使用情况,可能有选项。例如,如果您使用Html.LabelFor,则会使用一个参数来指定标签文字:

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

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