由于某种原因,它适用于表头的索引视图,但不适用于创建视图。
这是我的模型在控制器中的相关部分:
[Required(ErrorMessage = "Status is required.")]
[Display(Name = "Status")]
public int StatusId { get; set; }
我也有懒加载:
public virtual Status status { get; set; }
我甚至将它添加到状态模型中:
[Required(ErrorMessage = "Status is required.")]
[MaxLength(50)]
[Display(Name = "Status")]
public string StatusName { get; set; }
这是在视图中:
<div class="form-group">
@Html.LabelFor(model => model.StatusId, "StatusId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("StatusId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.StatusId, "", new { @class = "text-danger" })
</div>
然而,它并未在实际创建页面中显示为“状态”:
同一模型中的另一个发生同样的事情。这是什么交易?
答案 0 :(得分:2)
因为您正在使用以下重载,而您明确提供要显示的文本。
public static MvcHtmlString LabelFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
string labelText,
IDictionary<string, object> htmlAttributes
)
您使用的重载中的第二个参数是labelText
,它将显示在标签中。
使用此重载
public static MvcHtmlString LabelFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
object htmlAttributes
)
所以你的代码将是
@Html.LabelFor(model => model.StatusId, new { @class = "control-label col-md-2" })