MVC 3 DataAnnotations:不允许HTML

时间:2011-06-11 02:19:16

标签: html asp.net-mvc asp.net-mvc-3 data-annotations

有没有在MVC 3中使用DataAnnotations不允许在文本框中使用HTML? 我看到了一种允许使用HTML(AllowHTMLAttribute)的方法,但如果我不希望用户在文本框中键入任何HTML并想要警告他呢?

谢谢:)

3 个答案:

答案 0 :(得分:5)

你必须编写一个自定义的RegularExpressionAttribute ......如下所示:

public class DisallowHTMLAttribute : RegularExpressionAttribute
{
    public DisallowHTMLAttribute()
        : base(@"</?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'"">\s]+))?)+\s*|\s*)/?>")
    {
    }

    public override string FormatErrorMessage(string name)
    {

        return String.Format("The field {0} cannot contain html tags", name);

    }
}

您必须注册适配器以启用客户端验证,因此在Global.asax的Application_Start中添加以下代码行:

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DisallowHTMLAttribute), typeof(RegularExpressionAttributeAdapter));

在您的模型中,将属性添加到您要禁用html标记的属性中,如下所示:

[DisallowHTML]
public string SomeProperty{ get; set; }

答案 1 :(得分:0)

您可以在控制器操作上设置[ValidateInput(true)]

答案 2 :(得分:0)

显示用户的文本可能就足够了。如果用户想要发布HTML / XML样本怎么办?

    &lt;%:Model.UsersContent%&gt;