Бифуркационные сообщения об ошибках валидации в .Net - PullRequest
0 голосов
/ 14 января 2010

В ASP.Net как ограничить количество сообщений проверки только одним?

Правило: пользователь должен ввести число от 0 до 1000.

Текущий [нежелательный] Поведение:

Типы пользователей 1001: валидатор говорит: «Пожалуйста, введите неотрицательное число ниже 1000»
Типы пользователей -1: валидатор говорит: «Пожалуйста, введите неотрицательное число ниже 1000»

Желаемое поведение:

Типы пользователей 1001: валидатор говорит: «Пожалуйста, введите число ниже 1000»
Типы пользователей -1: валидатор говорит: «Пожалуйста, введите неотрицательное число»

Другими словами, как я могу использовать два asp: RangeValidators, запрещенные значения которых пересекаются, но включают только желаемое? Я не хочу обрабатывать событие ServerValidate на сервере.

Это возможно без кода на стороне клиента?

Ответы [ 3 ]

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

Вы можете использовать CompareValidator , чтобы проверить, является ли значение меньше нуля, и RangeValidator, чтобы проверить, находится ли значение между -2147483647 и 1000.

<asp:CompareValidator Id="IsNotNegativeValidator"
                      ControlToValidate="TextBox1"
                      ValueToCompare="-1"
                      Operator="GreaterThan"
                      Type="Integer"
                      Text="Please put in a non-negative number"
                      runat="server"/>

<asp:RangeValidator   Id="IsLessThanOneThousandValidator"
                      ControlToValidate="TextBox1"
                      MinimumValue="-2147483647"
                      MaximumValue="1000"
                      Type="Integer"
                      Text="Please put in a number beneath 1000"
                      runat="server"/>

(В данном конкретном случае это выглядит как один RangeValidator с сообщением «Пожалуйста, введите число от 0 до 1000», что приведет к меньшему разочарованию пользователя.)

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

Ваше «желаемое» поведение может быть несколько раздражающим:

  • Пользователь вводит 1001
  • Приложение сообщает пользователю «Пожалуйста, введите число ниже 1000»
  • Достаточно справедливо, думает пользователь и вводит -1 (что вы согласитесь - это"число под 1000")
  • Приложение сообщает пользователю «Пожалуйста, введите неотрицательное число»
  • Почему вы не упомянули это для начала!? - думает пользователь.

Я спрашиваю: что не так с существующим поведением, когда пользователю сообщают фактическое правило?

0 голосов
/ 14 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...