为什么ErrorMessage无法正确呈现

时间:2015-01-05 20:59:14

标签: asp.net validationsummary rangevalidator

在FormView EditItemTemplate,ASP-Panel内,AJAX面板内,Content-page内和Master-Page中的html-table(td)中使用ASP-TextBox 使用SAVE按钮验证文本框时,ValidationSummary显示错误的ErrorMessage。

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中出现错误时,它显示的完全如上所示 - 它不会将MinimumValue替换为错误文本。

我做错了什么? 感谢。

1 个答案:

答案 0 :(得分:0)

除非禁用,否则RangeValidators在客户端验证,即没有回发,因此服务器端嵌入式脚本不会被重新呈现

如果您要重置textbox事件的最小值,那么您可以像对MinimumValue一样设置ErrororMessage,但是使用修改后的字符串格式

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

但是现在我正在阅读更接近的东西。范围验证旨在检查最小值/最大值之间的值。您假设该值永远不会大于maxValue。如果始终如此,那么CompareValidator设置为TypeInteger设置为Operator

LessThan会更好地提供服务