2015-01-05 91 views
0

在ASP-Panel内,AJAX面板内,Content-page内和主页面内使用FormView EditItemTemplate中的html-table(td)内的ASP-TextBox,ValidationSummary显示错误的ErrorMessage使用SAVE按钮验证文本框时。为什么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替换为错误文本。

我在做什么错? 谢谢。

回答

0

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

如果您要重置文本框事件的最小值,那么你可以设置ErrororMessage与MinimumValue一样,但使用修改后的字符串格式

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

但是现在我正在读更近的东西。范围验证旨在检查介于最小/最大值之间的值。你假设该值永远不会大于maxValue。如果情况总是如此,那么你会更好地与CompareValidatorType设置为IntegerOperator设置为LessThan

+0

优秀的答案!完美的作品...谢谢。最大长度= 6因此值不能超过999999.我也感谢你对CompareValidator的建议。也许你可以协助这个问题? [链接] http://stackoverflow.com/questions/27650321/user-control-retains-focus-incorrectly-after-textchanged-postback-when-uc-is-con –