Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 2 - Multiple Regex on a property

I would like to know if a way exists in asp.net mvc 2, to have multiple regular expression on a proprety. For example :

[RegularExpression("[^0-9]", ErrorMessageResourceName = ValidationMessageResourceNames.OnlyDigits, ErrorMessageResourceType = typeof(ValidationMessages))]
[RegularExpression("[^<>]{2,}", ErrorMessageResourceName = ValidationMessageResourceNames.SpecialCharErrorCreateAccount, ErrorMessageResourceType = typeof(ValidationMessages))]
public string City { get; set; }

The target here, is two have two specific error messages, one for the digits and one other for the special Chars and the fact that the min lenght must be 2 chars.

Thanks in advance for the help, or experience.

Etienne.

like image 823
Etienne Avatar asked Oct 27 '25 02:10

Etienne


2 Answers

Something like this:

    public class DigitsAttribute : RegularExpressionAttribute
    {
        public DigitsAttribute()
            : base("[^0-9]")
        {
        }    
    }

    public class SpecialCharsAttribute : RegularExpressionAttribute
    {
        public SpecialCharsAttribute()
            : base("[^<>]{2,}")
        {
        }
    }

Use:

[Digits]
[SpecialChars]
public string City { get; set; }
like image 80
frennky Avatar answered Oct 28 '25 16:10

frennky


Change attribute usage with a custom class

The best solution is of course to create a custom attribute that inherits from RegularExpressionAttribute but sets different attribute usage settings. The main setting is AllowMultiple that you need to set to true.

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple=true)]
public class MultiRegularExpressionAttribute: RegularExpressionAttribute
{
    ...
}

You would use this attribute just like you use the existing RegularExpressionAttribute, but you'd have the ability to put multiple of them on the same property.

like image 28
Robert Koritnik Avatar answered Oct 28 '25 16:10

Robert Koritnik