为什么我的RangeValidator不工作?

时间:2012-03-30 21:55:52

标签: c# asp.net visual-studio validation controls

我不止一次成功地使用了验证器,但经过一些编程后我的验证器无法正常工作。也许我不知道为同一个控件定义2个验证器,但它不能用于一个验证器。控制。这是我的代码的两个例子:

示例1:一个必填字段验证器和一个用于用户名的“最大值”验证器:

<asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                  ControlToValidate="UserNameTextbox" ForeColor="red"
                                  Display="Dynamic"  ErrorMessage="Required" />

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="UsernameTextbox"  MinimumValue="1" MaximumValue="20"  ForeColor="red"  
    Display="Dynamic"   ErrorMessage="Name must contain maximum 20 characters"></asp:RangeValidator>

示例2:roadaddress的一个“最大值”验证器(字符串):

 <asp:RangeValidator ID="RangeValidator9" runat="server" MaximumValue="50"  ForeColor="red"
          ErrorMessage="Road Address must contain maxmum 50 characters" ControlToValidate="RoadAddressTextbox"></asp:RangeValidator>

我认为问题可能在display属性或causevalidation属性中,我不使用...

2 个答案:

答案 0 :(得分:4)

这不是RangeValidator的用途。 RangeValidator旨在检查输入以确保它在一定范围内,即确保数字介于1和5之间,日期在特定范围内等等。

您需要的是RegularExpressionValidator

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="UserNameTextbox"
    ErrorMessage="Username must be between 1 and 50 characters" 
    ValidationExpression="^[a-zA-Z\s]{1,50}">
</asp:RegularExpressionValidator>

编辑:将表达式更新为^[a-zA-Z\s]{1,50}

答案 1 :(得分:3)

RangeValidators不验证输入中的字符数,它们是“Check whether the value of an input control is within a specified range of values。”

您可以在没有验证器的情况下实际执行此操作,方法是在文本框中设置MaxLength属性,这将限制输入的字符数。

<asp:TextBox ID="UserNameTextbox" MaxLength="50" runat="server"></asp:TextBox>