显示注释在创建视图中不起作用

时间:2016-08-26 14:37:33

标签: c# asp.net-mvc visual-studio-2015

由于某种原因,它适用于表头的索引视图,但不适用于创建视图。

这是我的模型在控制器中的相关部分:

    [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>

然而,它并未在实际创建页面中显示为“状态”:

enter image description here

同一模型中的另一个发生同样的事情。这是什么交易?

1 个答案:

答案 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" })