У меня есть следующий набор регулярных выражений как свойство ValidationExpression
в элементе RegularExpressionValidator в веб-форме. Когда я вводил недопустимый символ в проверяемом элементе управления, валидатор обнаруживает его и показывает сообщение об ошибке.
<appSettings>
<add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" />
</appSettings>
Мой валидатор:
<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>"
Моя проверка на стороне сервера:
Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]);
if (!rex.Match(categoryName).Success)
{
throw new ArgumentException("CategoryName must match expression: " + rex);
Как вы можете видеть, точно такая же модель применяется на стороне клиента и на стороне сервера.
Однако, когда я очищаю проверенный элемент управления и отправляю пустую строку, валидатор считает это ОК, и я получаю сообщение об ошибке на моей стороне. Кто-нибудь знает, что здесь не так, за исключением нарушенного контракта RegularExpressionValidator?