Как показать отображаемое имя для полей внешнего ключа в ASP.NET MVC

Я видел много подобных вопросов, но, похоже, на них нет прямого ответа. Когда я пытаюсь добавить атрибут Display (Name) в поле внешнего ключа, отображаемое имя не отображается в форме Create, Edit, Delete and Details. Я также попытался поместить атрибут в свойство навигации:

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

person Randell Lamont    schedule 24.02.2015    source источник


Ответы (2)


Решение простое. После добавления атрибута отображения в модель удалите имя метки из представления.

Так что измени

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

to

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

на ваш взгляд. Эта проблема возникает, когда вы строите свое представление.

person aditya    schedule 12.02.2016
comment
Кажется странным, что строительные леса жестко кодируют текст метки в вызове LabelFor, учитывая, что вспомогательный метод предназначен для динамического извлечения этого текста, но вы правы @aditya. - person Paul Angelno; 22.03.2017
comment
спасибо @PaulAngelno Пожалуйста, отметьте это как ответ, если это поможет! - person aditya; 25.05.2017
comment
Это был не мой вопрос, поэтому я не могу отметить его как ответ, но я уже проголосовал за него. - person Paul Angelno; 25.05.2017

Это не будет работать со свойством навигации, поскольку оно никогда не редактируется напрямую. Вы используете либо свойство внешнего ключа, либо отдельные свойства связанной сущности, а не саму сущность.

Однако это должно было сработать для свойства внешнего ключа, если вы действительно используете это свойство, а не свойство навигации в вашем представлении, то есть:

@Html.EditorFor(m => m.GenderID)
person Chris Pratt    schedule 24.02.2015
comment
Привет, Крис, спасибо за ответ. Когда я помещаю атрибут в само свойство внешнего ключа, он по-прежнему не отображает отображаемое имя. Выпадающий список отображается должным образом. - person Randell Lamont; 24.02.2015