有没有在MVC 3中使用DataAnnotations不允许在文本框中使用HTML? 我看到了一种允许使用HTML(AllowHTMLAttribute)的方法,但如果我不希望用户在文本框中键入任何HTML并想要警告他呢?
谢谢:)
答案 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;