【问题标题】:multiple validatiors for a textbox in a gridview footergridview 页脚中文本框的多个验证器
【发布时间】:2016-04-14 16:51:24
【问题描述】:

我在 GridView 页脚模板中有一个文本框。要求是文本框必须是数字,大于 0 并且限制为 2 位小数。对于这个文本框,我有以下三个验证器。

<asp:TemplateField HeaderText="Amount">
    <ItemTemplate>
        <asp:Label ID="Label_Amount" runat="server" Text='<%# Bind("Amount") %>'></asp:Label>
    </ItemTemplate>
    <FooterTemplate>
        <asp:TextBox ID="txtAmount" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ErrorMessage="Amount is a required field"
            ControlToValidate="txtAmount" Text="*" ForeColor="Red" ValidationGroup="Insert">
        </asp:RequiredFieldValidator>
        <asp:CompareValidator ID="cvAmount" runat="server" ErrorMessage="Amount must be &gt; 0"
            ControlToValidate="txtAmount" ValueToCompare="0" ValidationGroup="Insert" Text="*"
            Type="Double" Operator="GreaterThan">
        </asp:CompareValidator>
        <asp:RegularExpressionValidator ID="revAmount" ControlToValidate="txtAmount" ValidationGroup="Insert" Text="*"
            runat="server" ErrorMessage="Amount limits to two decimal places" ValidationExpression="^\d+(\.\d{1,2})?$">
        </asp:RegularExpressionValidator>
    </FooterTemplate>
</asp:TemplateField>

问题是如果我放12,3,我只想看到“Amount must be >0”的错误信息。但是,我收到了两条错误消息。第三个正则表达式验证器也被触发。我不确定为什么?我想知道我该如何解决这个问题?我可以写一个正则表达式将我的三个要求结合在一起吗?我也尝试使用 CustomeValidator,但不知何故 JavaScript 函数永远不会被调用。有什么建议吗?

【问题讨论】:

  • 你在为 html5 (.Net 4.5+) 编程吗?
  • 我问了上面的问题,因为如果你是,那么你可以用&lt;input type="number" pattern="&lt;regexp as desired&gt;" min=".01" required /&gt; 消除所有的asp.net验证

标签: c# asp.net validation gridview


【解决方案1】:

12,3 或 abc 的 revAmount 验证失败,因为这些字符串与正则表达式不匹配。如果您希望该验证器仅在数字没有 1 或 2 个小数位时触发,它必须考虑非数字字符串是“有效的”(将这种情况的检测留给cvAmount,正如您在您的问题)。

以下正则表达式可用于revAmount。除了原始表达式匹配的情况外,它还匹配非数字字符串:

ValidationExpression="^(((?!^\d+\.?\d*$).)*|\d+(\.\d{1,2})?)$"

注意我保留了您的原始验证,但对于 123. 之类的数字(以小数点结尾)失败。您可以考虑修改错误消息以解决这种情况。

【讨论】:

    【解决方案2】:

    您只需要在页面的某处添加一个 ValidationSummary 控件。

    Please see an example here

    【讨论】:

    • 也许我的帖子不是很清楚,但我确实在 GridView 之后有 ValidationSummary。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多