如何修改EF中外键(gender_id)的页面显示标签?
解决EF元数据中gender_id标签无法修改的问题
嘿,我一眼就瞅出问题出在哪了!你看自动生成的View代码里,gender_id对应的LabelFor调用有个小坑:
@Html.LabelFor(model => model.gender_id, "gender_id", htmlAttributes: new { @class = "control-label col-md-2" })
这里你手动传了第二个参数"gender_id",这个硬编码的字符串直接覆盖了你在EmployeeMetaData里设置的[Display(Name = "Sexo")]属性!而last_name的LabelFor没传第二个参数,所以能正常读取元数据里的显示名称,这就是为啥它能生效,gender_id却不行。
解决方案分两步:
- 修正LabelFor的调用:
把gender_id的LabelFor里的第二个硬编码参数删掉,改成和last_name一致的写法:
@Html.LabelFor(model => model.gender_id, htmlAttributes: new { @class = "control-label col-md-2" })
这样框架就会自动读取元数据里的"Sexo"作为标签文本了。
- 推荐改用强类型DropDownListFor:
你当前用的DropDownList("gender_id", null, ...)是弱类型写法,更规范的做法是用强类型的DropDownListFor,既能避免拼写错误,也能更好地配合EF元数据。假设你在Controller里把性别列表放到了ViewBag.GenderList里,代码可以改成:
@Html.DropDownListFor(model => model.gender_id, ViewBag.GenderList as SelectList, new { @class = "form-control" })
改完刷新页面,gender_id的标签就会显示你想要的"Sexo"啦!
内容的提问来源于stack exchange,提问作者Juan Carlos Oropeza
相关产品推荐
相关产品推荐

