如何更改外键的显示标签

时间:2018-01-29 14:33:43

标签: c# asp.net-mvc entity-framework

我有Employee,其中gender_id为FK到Gender表格。并使用EF生成访问数据库的类。

我创建了一个MetaData类型,因此我可以更改页面上的标签显示。

[MetadataType(typeof(EmployeeMetaData))] 
public partial class Employee
{
}

public class EmployeeMetaData
{
    [Display(Name = "Nombre2")]
    public string first_name { get; set; }
    [Display(Name = "Apellido")]
    public string last_name { get; set; }
    [Display(Name = "Sexo")]
    public Nullable<int> gender_id { get; set; }
}

但是gender_id并没有像你在图片中看到的那样改变。

enter image description here

所以我认为还需要为Gender创建一个MetaData,但仍然没有在页面上显示。

这是自动生成的视图,last_name正常,但gender_id不会

<div class="form-group">
    @Html.LabelFor(model => model.last_name, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.last_name, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.last_name, "", new { @class = "text-danger" })
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(model => model.gender_id, "gender_id", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("gender_id", null, htmlAttributes: new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.gender_id, "", new { @class = "text-danger" })
    </div>
</div>

1 个答案:

答案 0 :(得分:3)

在问题中添加自动生成的View代码后,意识到问题是LabelFor还包含标签的名称。

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

删除"gender_id" LabelFor后开始使用MetaData别名。

  

当然,如果我再次自动生成视图,这将带来问题,更改将会丢失。