Почему мой RegularExpressionValidator позволяет не вводить текст? - PullRequest
1 голос
/ 20 января 2010

Почему этот код позволяет пользователю не вводить текст? AFAIK + означает One or more.

<asp:TextBox ID="myTextBox" runat="server" MaxLength="9" />
<asp:RegularExpressionValidator runat="server"
   ControlToValidate="myTextBox"
   ValidationExpression="\d+"
   ErrorMessage="Error!" />

Я хочу, чтобы пользователь смог ввести только 9 цифр. И это поле обязательно для заполнения. Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 20 января 2010

С MSDN :

Примечание : проверка завершается успешно, если контроль ввода пуст. Если значение требуется для соответствующего ввода элемент управления, используйте RequiredFieldValidator контроль в дополнение к Элемент управления RegularExpressionValidator.

1 голос
/ 20 января 2010

Валидаторы регулярных выражений работают только тогда, когда текст вводится по умолчанию. Я бы порекомендовал добавить отдельный RequiredFieldValidator, чтобы вы могли получить более полезное сообщение об ошибке.

Теперь ваше ValidationExpression должно быть \d{9}.

1 голос
/ 20 января 2010

Большинство валидаторов asp.net не запускаются, когда нет текста.Это в основном вводит необходимость в дополнительном RequiredFieldValidator, который вы должны добавить:

<asp:RequiredFieldValidator id="RequiredFieldValidator1"
                ControlToValidate="myTextBox"
                Display="Static"
                ErrorMessage="Required field"
                runat="server"/> 
0 голосов
/ 20 января 2010

Можете ли вы опубликовать оставшуюся часть кода со страницы, этот бит выглядит хорошо, но проблема может заключаться в используемой вами форме, есть ли в объявлении формы runat = "server"?

Попробуйте добавить это:

<asp:RequiredFieldValidator ID="rfv" Display="None" runat="server" ControlToValidate="myTextBox" ErrorMessage="name is required!"></asp:RequiredFieldValidator>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...