ASP.NET MVC data annotations client side validation with inherited RegularExpressionAttribute

前端 未结 2 1899
生来不讨喜
生来不讨喜 2020-12-08 11:09

To keep my model validation clean I would like to implement my own validation attributes, like PhoneNumberAttribute and EmailAttribute. Some of the

相关标签:
2条回答
  • 2020-12-08 11:44

    extending of the right answer

    public class EmailAttribute : RegularExpressionAttribute
    {
        static EmailAttribute()
        {
            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAttribute), typeof(RegularExpressionAttributeAdapter));
        }
    
        public EmailAttribute()
            : base(@"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$") //^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
        {
    
        }
    }
    
    0 讨论(0)
  • 2020-12-08 11:47

    You'll need to register a client-side validation adapter for your custom attribute. In this case you can use the existing RegularExpressionAttributeAdapter in System.Web.Mvc, since it should work exactly the same as the standard regex attribute. Then register it when your application start using:

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

    Should you write an attribute that requires custom client-side validation, you can implement your own adapter by inheriting from DataAnnotationsModelValidator (see also Phil Haack's blog).

    0 讨论(0)
提交回复
热议问题