2016-08-26 89 views
0

出於某種原因,它在表格標題的索引視圖中工作,但不適用於創建視圖。顯示註釋在創建視圖中不起作用

這裏是我的控制器模型的相關部分:

[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

同樣的事情發生與另一個在同一個模型。這是怎麼回事?

回答

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" }) 
+0

哇哦我沒有看到過載,我不知道爲什麼它產生的。 –