MVC 3 DataAnnotations:不允许 HTML

发布于 2024-11-15 02:24:49 字数 152 浏览 7 评论 0 原文

无论如何,是否可以在 MVC 3 中使用 DataAnnotations 来不允许在文本框中使用 HTML? 我看到了一种允许使用 HTML (AllowHTMLAttribute) 的方法,但是如果我不希望用户在文本框中键入任何 HTML 并且想警告他怎么办?

谢谢 :)

Is there anyway to use DataAnnotations in MVC 3 to not allow HTML is used in a textbox?
I see a way to allow using HTML (AllowHTMLAttribute) but what if i dont want the user to type any HTML in the textbox and want to warning him?

Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

素手挽清风 2024-11-22 02:24:49

您必须编写一个自定义的 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; }

You have to write a custom RegularExpressionAttribute ... something like this:

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);

    }
}

You must register the adapter to enable client side validation, so in Application_Start in Global.asax add this line of code:

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

And in your model, add the attribute to the properties you want to disallow html tags, like this:

[DisallowHTML]
public string SomeProperty{ get; set; }
蓝颜夕 2024-11-22 02:24:49

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

You may set [ValidateInput(true)] on controller action

旧时光的容颜 2024-11-22 02:24:49

显示用户文本时对其进行转义可能就足够了。如果用户想要发布 HTML/XML 示例怎么办?

<%:模型.UsersContent %>

Escaping user's text when displaying it may be enough. What if the user wants to post a HTML/XML sample?

<%: Model.UsersContent %>

牵你手 2024-11-22 02:24:49

我使用此数据注释和正则表达式来检查

public class DisallowHTMLAttribute : RegularExpressionAttribute
{
    public DisallowHTMLAttribute()
        : base(@"[^<>&]*")
    {
    }

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

我的模型中的 html 标签:

    [Required]
    [DisallowHTML]
    public string FirstName { get; set; }

Im using this data annotation with a regular expression to check for html tags

public class DisallowHTMLAttribute : RegularExpressionAttribute
{
    public DisallowHTMLAttribute()
        : base(@"[^<>&]*")
    {
    }

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

In my model:

    [Required]
    [DisallowHTML]
    public string FirstName { get; set; }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文