Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom DataAnnotations Validator Derived from RegularExpressionAttribute

The Gu provides an example of how you might create a custom validator that overrides RegularExpressionAttribute .

The advantage of this is that you don't have to create a custom Model Validator but I can't get it to work.

Given the following code:

public class NameAttribute : RegularExpressionAttribute {
    public NameAttribute()
        : base(@"^[\w\s\-\']+$") {
    }
}

This works:

[RegularExpression(@"^[\w\s\-\']+$")]

But this doesn't:

[Name]

Have I misunderstood an aspect of Scott's example or is the example flawed in that MVC doesn't support derived types out of the box, so actually I will have to create a a corresponding ModelValidator?

like image 308
kim3er Avatar asked Apr 22 '10 09:04

kim3er


2 Answers

Cracked it! Add the following to Global.asax.cs Application_Start()

DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(NameAttribute), typeof(RegularExpressionAttributeAdapter));
like image 163
kim3er Avatar answered Oct 23 '22 10:10

kim3er


If u wanna a client validation, you should Register a server-side adapter for remote validation.

See here: http://msdn.microsoft.com/en-us/magazine/ee336030.aspx

and here: http://bradwilson.typepad.com/blog/2010/01/remote-validation-with-aspnet-mvc-2.html

like image 1
Andersson Melo Avatar answered Oct 23 '22 09:10

Andersson Melo