Dchris
Dchris

Reputation: 3047

Why isn't my RangeValidator working?

I succesfully used a validator more than once,but after some programming my validators are not working.Maybe is something i don't know about defining 2 validators for the same control, but it doesn't work for one validator in a control either.Here are 2 examples of my code:

Example 1: one required field validator and one "maximum value" validator for username:

<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>

Example 2: one "maximum value" validator for roadaddress(string):

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

I am thinking that the problem is maybe in the display property or in the causesvalidation property which i don't use...

Upvotes: 4

Views: 5139

Answers (2)

Robbie
Robbie

Reputation: 19500

RangeValidators don't validate the number of characters in the input, they "Check whether the value of an input control is within a specified range of values."

You can actually do this without a Validator, by setting the MaxLength property on the text box which would limit the number of characters entered into it.

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

Upvotes: 3

James Johnson
James Johnson

Reputation: 46047

That's not what the RangeValidator is used for. The RangeValidator is intended to check input to make sure it's within a certain range, i.e. to make sure that a number is between 1 and 5, that a date is within a certain range, etc.

What you need is a 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>

EDIT: Updated expression to ^[a-zA-Z\s]{1,50}

Upvotes: 4

Related Questions