ASP.NET RangeValidator ведет себя странно - PullRequest
1 голос
/ 13 апреля 2011

Атрибут типа установлен в строку, и его минимальное значение = 0, а максимальное значение = 100.

Я хочу убедиться, что введенные данные не будут превышать длину столбца, определенную в базе данных.

Теперь, когда я проверяю его, на нем всегда отображается сообщение об ошибке, даже если я ввел одну или две буквы!

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Вы должны использовать RegularExpressionValidator для этого.RangeValidators не для длины строки.Установите для выражения ValidationExpression что-то вроде .?, или вы можете сузить его до чего-то вроде \S? или \w? или чего-то еще, если хотите.

Кроме того, если вы работаете с TextBox, который не находится в режиме MultiLine (и нет никаких причин, по которому это может быть, если максимум равен одному символу), вы можете просто установить MaxLength="1" на элементе управления, и вы выиграли 'валидатор вообще не нужен.

РЕДАКТИРОВАТЬ: Если вы хотите указать максимальную длину больше, чем один в многострочном TextBox, вы можете использовать RegularExpressionValidator, как описано выше, но установить ValidationExpression=".{0,100}" для максимальной длины 100. Дополнительная информация о квантификаторах регулярных выражений доступна здесь .

Если у вас однострочный TextBox, просто установите его атрибут MaxLength на желаемый максимум, иэто не позволит ничего дольше этого;валидатор не требуется.

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

1 голос
/ 13 апреля 2011

Установите для свойства "MaxLength" значение 1. Это Страница MSDN описывает свойство и его использование.

RangeValidator проверяет значение ввода, а не длину, поэтому выограничивает допустимые значения {0, 1} с помощью вашего валидатора.

...