LabelFor使用AllowHtml时不正确

时间:2015-07-29 20:23:02

标签: asp.net-mvc razor html-helper asp.net-mvc-5.2

我使用的是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属性,View呈现如下:

Incorrect Label

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

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

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

    // .... Other Properties
}

Correct Rendering

同样值得指出的是,删除RichText属性不会改变任何内容,View仍会忽略Display属性。

为什么AllowHtml会干扰LabelFor

的任何想法

1 个答案:

答案 0 :(得分:0)

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

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