可以让CompareValidator接受带逗号的数字吗?

Abe*_*ler 5 asp.net validation

我一直在为网页上的输入字段进行Double的类型检查,但现在我需要允许逗号.可以使用CompareValidator完成,还是需要使用正则表达式验证器?

Ahm*_*eed 8

而不是使用Type="Double",尝试使用Type="Currency".它应该接受带逗号和不带逗号的值,但是它不会接受超过2个小数位.

这是一个例子:

<asp:TextBox runat="server" ID="TextBox1" />
<asp:CompareValidator runat="server" ID="cValidator" ControlToValidate="TextBox1"
     Type="Currency" Operator="DataTypeCheck" EnableClientScript="true"
     ErrorMessage="Invalid format!" Display="Dynamic" />
Run Code Online (Sandbox Code Playgroud)

否则a RegularExpressionValidator会工作,再加上a RequiredFieldValidator来验证空条目(正则表达式验证器不会阻止空条目).您可以使用a CustomValidator,但如果您不想仅依靠服务器端验证和回发,则需要在JavaScript中提出客户端验证例程.此外,客户端解决方案可能涉及正则表达式,而且整体验证工作更多,尽管不是太复杂.

这是一个使用以下示例RegularExpressionValidator:

<asp:TextBox runat="server" ID="TextBox1" />
<asp:RequiredFieldValidator runat="server" ID="rfValidator" Display="Dynamic"
     ControlToValidate="TextBox1" ErrorMessage="Required!" />
<asp:RegularExpressionValidator ID="reValidator" runat="server"
       ControlToValidate="TextBox1" 
       EnableClientScript="True"
       ErrorMessage="Invalid Format!" 
       Display="Dynamic"
       ValidationExpression="(\d{1,3}(,\d{3})*\.\d{2})|(\d+(\.\d{2})?)" />
Run Code Online (Sandbox Code Playgroud)