必填字段验证器中的数字验证

20
在ASP.NET文本框中的必填字段验证器中,是否可以进行数字验证?
7个回答

73

你应该使用CompareValidator,例如:

<asp:TextBox ID="txt" runat="server />
<asp:CompareValidator ID="cv" runat="server" ControlToValidate="txt" Type="Integer"
   Operator="DataTypeCheck" ErrorMessage="Value must be an integer!" />

如果您想要进行简单的数据类型检查,则这是最自然的选择。否则,如果您想要验证一个范围,请使用RangeValidator建议。如果您需要特定的模式,请使用RegularExpressionValidator

请注意,由于某些验证器允许空白条目,因此您还需要添加RequiredFieldValidator


我将此验证器附加到ValidationGroup="Form"。但是我仍然可以提交表单而不会引发验证错误。有什么建议吗? - Dr. MAF
@Dr.MAF 您是否也根据最后一行添加了 RequiredFieldValidator?它可以防止空白输入。 - Ahmad Mageed
是的。在提交时,如果文本框为空,则RequiredValidators会正确触发,但如果输入为字母,则CompareValidator不会触发。 - Dr. MAF
1
好的,好的。我找到了。我有一个打字错误。ValidationGroup="From"应该是"Form"。 - Dr. MAF

7

实际上,您只需要一个正则表达式验证器来实现这个目的,其中 ValidationExpression = "^\d+?$"


ValidationExpression = @"^\d+?$" 的意思是“验证表达式为一个仅包含数字的字符串”。 - IluTov

4

您还可以使用\d+作为模式,使用正则表达式验证器:http://www.java2s.com/Code/ASP/Validation-by-Control/Avalid5digitzipcode.htm。 - Gavin Miller

2
另一种可能性是使用RegexpValidator并添加一个正则表达式来确保其中有1个或多个数字,例如:

RegularExpressionValidator regexpvalidator = new RegularExpressionValidator(); 
regexpvalidator.ID = "RegularExpressionValidator1"; 
regexpvalidator.ValidationExpression = "\d+"; 
regexpvalidator.ControlToValidate = "YourControl"; 
regexpvalidator.ErrorMessage = "Please specify a digit"; 
regexpvalidator.SetFocusOnError = true; 

1
不,除了 RequiredFieldValidator(以及可能的 CustomValidator)之外的验证器将忽略空输入。 - Hans Kesting

2
是的,就像这样:
<asp:TextBox ID="tb" runat="server"></asp:TextBox>
<asp:RangeValidator ControlToValidate="tb" Type="Integer"></asp:RangeValidator>

这会抛出一个与未指定“MaximumValue”有关的异常。 - strider

2

不,RequiredFieldValidator只能验证该字段是否包含内容。

如果要验证该字段仅包含数字,则可以使用具有模式"\d+"的RegularExpressionValidator。


2

RequiredFieldValidator只检查字段是否已填写。它不关心填写了什么。

你需要一个额外的CompareValidator,将其运算符设置为DataTypeCheck,类型设置为Integer。请注意,你需要这两个条件:CompareValidator会忽略空输入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接