使用 AllowHtml 时 LabelFor 不正确

LabelFor incorrect when using AllowHtml

我正在使用 MVC 5.2.2.0、.net 4.5.1,我看到了一些奇怪的行为。我有一个这样的模型:

public class Program
{
    // .... Other Properties 

    [Display(Name = "Courses Description")]
    [RichText]
    [AllowHtml]
    public string CoursesDescription { get; set; }

    // .... Other Properties
}

RichText 是自定义属性:

[AttributeUsage(AttributeTargets.Property)]
public class RichText : Attribute
{
    public RichText() { }
}

它的用途是告诉 T4 模板将 wysi 数据编辑器属​​性添加到 TextAreaFor html 助手。

我的看法是这样的:

 <div class="form-group">
     @Html.LabelFor(model => model.CoursesDescription, htmlAttributes: new { @class = "control-label col-sm-3" })
     <div class="col-sm-6">
         @Html.TextAreaFor(model => model.CoursesDescription, 10, 20, new { @class = "form-control", data_editor = "wysi" })
         @Html.ValidationMessageFor(model => model.CoursesDescription, "", new { @class = "text-danger" })
     </div>
 </div>

使用 AllowHtml 属性,视图呈现如下:

但是,如果我通过删除 AllowHtml 属性修改模型,视图将正确呈现。

public class Program
{
    // .... Other Properties 

    [Display(Name = "Courses Description")]
    [RichText]
    public string CoursesDescription { get; set; }

    // .... Other Properties
}

同样值得指出的是,删除 RichText 属性并没有改变任何东西,视图仍然忽略 Display 属性。

知道为什么 AllowHtml 会干扰 LabelFor 吗?

深入研究后,我注意到我的 MVC 项目使用的是 MVC 5.2.2.0,但我无意中为我的模型项目安装了 MVC 5.2.3.0。

将模型项目降级到 5.2.2.0 解决了这个问题。