Randell Lamont
Randell Lamont

Reputation: 81

How to show Display Name for foreign key fields in ASP.NET MVC

I've seen many similar questions, but none seem to have a direct answer. When I attempt to add a Display(Name) attribute to a foreign key field, the Display Name isn't shown on the Create, Edit, Delete and Details form. I tried putting the attribute on the navigation property as well:

[Display(Name="Gender")]
public virtual Gender Gender {get; set;}

but that didn't work either.

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

Upvotes: 4

Views: 5930

Answers (2)

aditya
aditya

Reputation: 595

The solution is simple. After you add the display attribute in the model, remove the label name from the view.

So Change

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

in your view. This problem occurs when you scaffold your view.

Upvotes: 8

Chris Pratt
Chris Pratt

Reputation: 239240

It won't work on the navigation property, since that's never edited directly. You're either using the foreign key property or the individual properties on the related entity, not the entity itself.

However, that should have worked placed on the foreign key property, assuming you're actually using that property, and not the navigation property in your view, i.e.:

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

Upvotes: 1

Related Questions