Почему ErrorMessage не отображается правильно

Используя ASP-TextBox в html-таблице (td) в FormView EditItemTemplate, в ASP-Panel, в панели AJAX, на странице содержимого и на главной странице, ValidationSummary показывает неправильное сообщение об ошибке при проверке текстового поля с помощью кнопки СОХРАНИТЬ.

ValSummary показывает, что "введенный пробег меньше '‹%= txtMileageRangeValidator.MinimumValue %>' миль".

И НЕ "Введенный пробег меньше 88123 миль"

Разметка для текстового поля и валидатора следующая:

<asp:TextBox ID="txtMileage" runat="server" Text='<%# Bind("Mileage") %>' 
   CssClass="ucIsRequired"
   MaxLength="6" 
   AutoPostBack="True" OnTextChanged="txtMileage_TextChanged" 
/>
<asp:RangeValidator ID="txtMileageRangeValidator" runat="server" 
   ControlToValidate="txtMileage"
   Enabled="true"
   Display="None"
   MinimumValue='<%# Eval("aMileagePrev", "{0:D}")%>' 
   MaximumValue="999999"
   SetFocusOnError="false" 
   Type="Integer"
   ValidationGroup="valgrpDetails"
   ErrorMessage="Mileage entered is less than '<%= txtMileageRangeValidator.MinimumValue %>' miles"
   />

Однако, когда ошибка появляется в ValidationSummary, она выглядит точно так, как указано выше — она не заменяет Минимальное значение в тексте ошибки.

Что я делаю неправильно? Спасибо.


person John D    schedule 05.01.2015    source источник


Ответы (1)


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

Если вы собираетесь сбросить минимальное значение в событии текстового поля, вы можете установить ErrororMessage так же, как и для MinimumValue, но с измененным строковым форматом.

ErrorMessage='<%# Eval("aMileagePrev", "Mileage entered is less than {0:D} miles") %>'

Но что-то еще теперь, когда я читаю ближе. Проверка диапазона предназначена для проверки значения, находящегося между минимальными и максимальными значениями. Вы делаете предположение, что значение никогда не будет больше maxValue. Если это всегда так, то вам лучше обслуживать CompareValidator с Type, установленным на Integer, и Operator, установленным на LessThan.

person fnostro    schedule 05.01.2015
comment
Отличный ответ!!!! отлично работает... Спасибо. Максимальная длина = 6, поэтому значение не может превышать 999999. Я также благодарю вас за ваше предложение относительно CompareValidator. Может вы поможете с этим вопросом??? [ссылка]stackoverflow.com/questions/27650321/ - person John D; 06.01.2015