Как написать пользовательский RegularExpressionValidator, который принимает значения из файла конфигурации? - PullRequest
9 голосов
/ 11 июля 2011

Я должен использовать валидатор регулярных выражений для свойства username в моей модели. Я получаю это регулярное выражение из файла конфигурации.

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

Здесь я получаю сообщение об ошибке «Аргумент атрибута должен быть выражением константы, выражением typeof или выражением создания массива типа параметра атрибута»

Как я могу решить это?

1 Ответ

13 голосов
/ 11 июля 2011
public class ConfigRegularExpressionAttribute : RegularExpressionAttribute
{
    public ConfigRegularExpressionAttribute(string patternConfigKey)
        : base(ConfigurationManager.AppSettings[patternConfigKey])
    { }
}

и затем:

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

и в файле web.config:

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