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

Я видел много похожих вопросов, но, похоже, ни на один из них нет прямого ответа. Когда я пытаюсь добавить атрибут Display(Name) в поле внешнего ключа, отображаемое имя не отображается в форме Create, Edit, Delete и 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;}       
}

2 ответа

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

Так изменить

            @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" })

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

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

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

@Html.EditorFor(m => m.GenderID)
Другие вопросы по тегам