Asp.net mvc 如何在ASP.NET MVC中显示外键字段的显示名称

Asp.net mvc 如何在ASP.NET MVC中显示外键字段的显示名称,asp.net-mvc,data-annotations,foreign-key-relationship,displayname-attribute,Asp.net Mvc,Data Annotations,Foreign Key Relationship,Displayname Attribute,我见过许多类似的问题,但似乎都没有直接的答案。 当我尝试向外键字段添加显示(名称)属性时,显示名称不会显示在创建、编辑、删除和详细信息表单上。 我还尝试将属性放置在导航属性上: [Display(Name="Gender")] public virtual Gender Gender {get; set;} 但这也不起作用 public class Person { public int ID {get; set;} public string FirstName {get;

我见过许多类似的问题,但似乎都没有直接的答案。 当我尝试向外键字段添加显示(名称)属性时,显示名称不会显示在创建、编辑、删除和详细信息表单上。 我还尝试将属性放置在导航属性上:

[Display(Name="Gender")]
public virtual Gender Gender {get; set;}
但这也不起作用

public class Person
{
    public int ID {get; set;}
    public string FirstName {get; set;}
    public string LastName {get; set;}
    [Display(Name="Gender")]
    public int GenderID {get; set;}

    public virtual Gender Gender {get; set;}
}


public class Gender
{
    public int ID {get; set;}
    public string GenderName {get; set;}

    public virtual ICollection<Person> People {get; set;}       
}
公共类人物
{
公共int ID{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
[显示(Name=“Gender”)]
public int GenderID{get;set;}
公共虚拟性别性别{get;set;}
}
公共阶级性别
{
公共int ID{get;set;}
公共字符串GenderName{get;set;}
公共虚拟ICollection人员{get;set;}
}

它在导航属性上不起作用,因为它从不直接编辑。您在相关实体上使用外键属性或单个属性,而不是实体本身

但是,如果您实际使用的是外键属性,而不是视图中的导航属性,则在外键属性上应该可以使用,即:

@Html.EditorFor(m => m.GenderID)

解决办法很简单。在模型中添加“显示”属性后,从视图中删除标签名称

所以改变

            @Html.LabelFor(model => model.GenderID, "GenderID", htmlAttributes: new { @class = "control-label col-md-2" })

在你看来。
当您构建视图时会出现此问题。

嗨,克里斯,谢谢您的回复。当我将属性放在外键属性本身上时,它仍然不显示显示名称。下拉列表如预期所示。脚手架将标签文本硬编码到LabelFor调用中似乎很奇怪,因为helper方法旨在动态拉取该文本,但您是对的@aditya.Thank@PaulAngelno如果有帮助,请将其标记为answer!这不是我的问题,所以我不能把它作为答案,但我已经投了更高的票。
            @Html.LabelFor(model => model.GenderID, htmlAttributes: new { @class = "control-label col-md-2" })