【问题标题】:Why does ErrorMessage not render correctly为什么 ErrorMessage 不能正确呈现
【发布时间】:2015-01-05 20:59:14
【问题描述】:

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

ValSummary 显示“输入的里程小于 '' 英里”。

而不是“输入的里程少于 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 替换为错误文本。

我做错了什么? 谢谢。

【问题讨论】:

    标签: asp.net validationsummary rangevalidator


    【解决方案1】:

    除非禁用,否则 RangeValidators 会在客户端进行验证,即没有回发,因此不会重新渲染服务器端嵌入的脚本

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

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

    但是现在我正在仔细阅读其他内容。范围验证旨在检查介于最小值/最大值之间的值。您假设该值永远不会大于 maxValue。如果情况总是如此,那么您最好使用CompareValidator 并将Type 设置为Integer 并将Operator 设置为LessThan 为您提供更好的服务

    【讨论】:

    • 优秀的答案!!!!完美运行...谢谢。因此 max-length=6 的值不能超过 999999。我也感谢您对 CompareValidator 的建议。也许您可以帮助解决这个问题??? [链接]stackoverflow.com/questions/27650321/…
    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2021-01-29
    • 2017-08-03
    • 2021-08-20
    • 1970-01-01
    • 2015-10-08
    • 2023-02-08
    • 2021-05-03
    相关资源
    最近更新 更多