【发布时间】: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 > 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+) 编程吗?
-
我问了上面的问题,因为如果你是,那么你可以用
<input type="number" pattern="<regexp as desired>" min=".01" required />消除所有的asp.net验证
标签: c# asp.net validation gridview