Почему мой RangeValidator не работает? - PullRequest
4 голосов
/ 31 марта 2012

Я успешно использовал валидатор более одного раза, но после некоторого программирования мои валидаторы не работают. Может быть, я не знаю, как определить 2 валидатора для одного и того же элемента управления, но он не работает для одного валидатора вуправления либо. Вот два примера моего кода:

Пример 1: один обязательный валидатор поля и один валидатор «максимального значения» для имени пользователя:

<asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                  ControlToValidate="UserNameTextbox" ForeColor="red"
                                  Display="Dynamic"  ErrorMessage="Required" />

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="UsernameTextbox"  MinimumValue="1" MaximumValue="20"  ForeColor="red"  
    Display="Dynamic"   ErrorMessage="Name must contain maximum 20 characters"></asp:RangeValidator>

Пример 2: одно «максимальное значение»"валидатор для roadaddress (строка):

 <asp:RangeValidator ID="RangeValidator9" runat="server" MaximumValue="50"  ForeColor="red"
          ErrorMessage="Road Address must contain maxmum 50 characters" ControlToValidate="RoadAddressTextbox"></asp:RangeValidator>

Я думаю, что проблема, возможно, в свойстве display или в свойстве reasonsvalidation, которое я не использую ...

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

Это не то, для чего используется RangeValidator. RangeValidator предназначен для проверки ввода, чтобы убедиться, что он находится в определенном диапазоне, т.е. чтобы убедиться, что число находится в диапазоне от 1 до 5, что дата находится в определенном диапазоне и т. Д.

Что вам нужно, это RegularExpressionValidator:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="UserNameTextbox"
    ErrorMessage="Username must be between 1 and 50 characters" 
    ValidationExpression="^[a-zA-Z\s]{1,50}">
</asp:RegularExpressionValidator>

РЕДАКТИРОВАТЬ: Обновлено выражение на ^[a-zA-Z\s]{1,50}

3 голосов
/ 31 марта 2012

RangeValidators не проверяют количество символов на входе, они " Проверьте, находится ли значение элемента управления вводом в указанном диапазоне значений ."

На самом деле вы можете сделать это без валидатора, установив свойство MaxLength в текстовом поле, которое будет ограничивать количество вводимых в него символов.

<asp:TextBox ID="UserNameTextbox" MaxLength="50" runat="server"></asp:TextBox>
...