加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-2 – ASP.NET MVC数据注释客户端验证与继承的Regula

发布时间:2020-12-16 00:46:23 所属栏目:asp.Net 来源:网络整理
导读:为了保持我的模型验证清洁我想实现我自己的验证属性,如PhoneNumberAttribute和EmailAttribute。其中一些可以有利地被实现为继承自RegularExpressionAttribute的简单类。 但是,我注意到这样做会破坏这些属性的客户端验证。我假设有某种类型的绑定在某个地方
为了保持我的模型验证清洁我想实现我自己的验证属性,如PhoneNumberAttribute和EmailAttribute。其中一些可以有利地被实现为继承自RegularExpressionAttribute的简单类。

但是,我注意到这样做会破坏这些属性的客户端验证。我假设有某种类型的绑定在某个地方失败。

任何想法我可以做什么来让客户端验证工作?

代码示例:

public sealed class MailAddressAttribute : RegularExpressionAttribute
{
    public MailAddressAttribute()
        : base(@"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$")
    {
    }
}

解决方法

您需要为自定义属性注册客户端验证适配器。在这种情况下,您可以使用System.Web.Mvc中的现有RegularExpressionAttributeAdapter,因为它应该与标准regex属性完全相同。然后在应用程序开始使用时注册它:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
    typeof(MailAddressAttribute),typeof(RegularExpressionAttributeAdapter));

您应该编写一个需要自定义客户端验证的属性,您可以从DataAnnotationsModelValidator继承自己的适配器(另见Phil Haack’s blog)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读