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