3

我见过很多类似的问题,但没有一个似乎有直接的答案。 当我试图将显示(名称)属性添加到外键字段时,显示名称不会显示在创建,编辑,删除和详细信息表单上。 我试图把属性上的导航性能,以及:如何在ASP.NET MVC中显示外键字段的显示名称

[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;}  
} 

回答

1

它不会在导航属性上工作,因为它从来没有直接编辑。您要么使用外键属性,要么使用相关实体的个别属性,而不是实体本身。

但是,应该有工作置于外键属性,你实际上使用财产承担,而不是导航属性在您的观点,即:

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

嗨克里斯,谢谢你的回应。当我将属性放在外键属性本身上时,它仍然不显示显示名称。 下拉列表按预期显示。 – 2015-02-24 19:44:21

6

解决方法很简单。在模型中添加display属性后,从视图中删除标签名称。

所以更改

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

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

在您的视图。 当您脚手架视图时,会发生此问题。

+0

似乎很奇怪,脚手架将标签文本硬编码到LabelFor调用中,考虑到辅助方法被设计为动态地拉动文本,但是您是对的@aditya。 – 2017-03-22 18:08:43

+0

谢谢@PaulAngelno如果有帮助请标记为答案! – aditya 2017-05-25 00:29:01

+0

这不是我的问题,所以我不能将它标记为答案,但我已经将它提出来了。 – 2017-05-25 14:45:10