2011-07-11 8 views
8

Tengo que usar un validador de expresiones regulares para la propiedad del nombre de usuario en mi modelo. Obtengo esta expresión regular del archivo de configuración.¿Cómo escribir CustomExpressionValidator personalizado que toma los valores del archivo de configuración?

[RegularExpression(UsernameValidationExpression)] //UsernameValidationExpression = value from the config file 
public string UserName { get; set; } 

Aquí estoy recibiendo un error "Un argumento atributo debe ser una expresión constante, typeof expresión o la creación de la matriz expresión de un atributo tipo de parámetro"

¿Cómo puedo solucionar esto ??

Respuesta

12
public class ConfigRegularExpressionAttribute : RegularExpressionAttribute 
{ 
    public ConfigRegularExpressionAttribute(string patternConfigKey) 
     : base(ConfigurationManager.AppSettings[patternConfigKey]) 
    { } 
} 

y luego:

[ConfigRegularExpression("UsernameValidationExpression")] 
public string UserName { get; set; } 

y en web.config:

<appSettings> 
    <add key="UsernameValidationExpression" value="foo bar" /> 
</appSettings> 
Cuestiones relacionadas