Link to home
Start Free TrialLog in
Avatar of introlux
introluxFlag for United Kingdom of Great Britain and Northern Ireland

asked on

Range validatator HELP (String)

Hi,

I would like to set a control for two things

Username: (I would like this to have a min of 4 characters abd 10 max)

Password: (I would like this to have at least 1 number and min of 6 characters and max 15 in total)

Any idea how I can achieve this?

Regards,

introlux
Avatar of crazyman
crazyman
Flag of United Kingdom of Great Britain and Northern Ireland image

Does this need to be client side validation or serverside, you should generally do either both or serverside only as clientside only can be bypassed.
Avatar of Nasir Razzaq
Use custom validator. It lets you perform the validation yourself so you could write code such as
if txtusername.text.length < 4 or txtusername.text.length > 10 then
   'error
end if
Hi
how much validation do you want to do in your application?
you could use the microsoft enterprise libary application block.
There is a StringLengthValidator  you can use :
sort of what the code would look like :
[StringLengthValidator(1, 50, Ruleset = "RuleSetA",
MessageTemplate = "First Name must be between 1 and 50 characters")]
Avatar of introlux

ASKER

I would just prefer to use the validation controls on client side. As its only a minor username and password. Not going to be used heavily.

Just needed something simple to do this. I am using c# and NOT vb.

Regards,

introlux
which framework 1, 2, 3, 3.5?
you could just implement the validating method on the control itself

private void textBox1_Validating(object sender, CancelEventArgs e)
{
if ((textBox1.Text.Length < 3) || (textBox1.Text.Length > 10))
{
//tell user he is a doofus
}
}
You could use a regular expression validator.
ASKER CERTIFIED SOLUTION
Avatar of MarkMyburgh
MarkMyburgh
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Compiler Error Message: CS0117: 'ASP.testvalidation_aspx' does not contain a definition for 'ServerValidation'

Source Error:

 

Line 12:      
Line 13:       <asp:TextBox id="TextBox1" runat="server" />
Line 14:       <asp:CustomValidator id="CustomValidator1"
Line 15:            ControlToValidate="TextBox1"
Line 16:            ClientValidationFunction="PasswordLength"
 
ServerValidation is the function which would be executed on the server when validating. Create this procedure in the codebehind on the server.
Compiler Error Message: CS0246: The type or namespace name 'CancelEventArgs' could not be found (are you missing a using directive or an assembly reference?)

Source Error:

 

Line 17:     }
Line 18:
Line 19:     private void ServerValidation(object sender, CancelEventArgs e)
Line 20:     {
Line 21:         if ((textBox1.Text.Length < 3) || (textBox1.Text.Length > 10))
 
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Compiler Error Message: CS0138: A using namespace directive can only be applied to namespaces; 'System.Web.UI.WebControls.ServerValidateEventArgs' is a type not a namespace

Source Error:

 

Line 9:  using System.Web.UI.WebControls.WebParts;
Line 10: using System.Web.UI.HtmlControls;
Line 11: using System.Web.UI.WebControls.ServerValidateEventArgs;
Line 12:
Line 13: public partial class TestValidation : System.Web.UI.Page
 
Mate, just replace this
private void ServerValidation(object sender, CancelEventArgs e)
with this
private void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
itolux, you come right there?
Compiler Error Message: CS0122: 'TestValidation.ServerValidation(object, System.Web.UI.WebControls.ServerValidateEventArgs)' is inaccessible due to its protection level

Source Error:

 

Line 12:      
Line 13:       <asp:TextBox id="TextBox1" runat="server" />
Line 14:       <asp:CustomValidator id="CustomValidator1"
Line 15:            ControlToValidate="TextBox1"
Line 16:            ClientValidationFunction="PasswordLength"
 
make it friend instead of private.
what do you mean?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
It compiles now but does not do anything!
<body>
    <form id="form1" runat="server">
    <div>
      
      <asp:TextBox id="TextBox1" runat="server" />
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="TextBox1"
           ClientValidationFunction="PasswordLength"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Doofus!"          
           runat="server"/>
      <br /> 
      <asp:Button id="Button1" Text="Validate" runat="server"/>    
    </div>
    </form>
</body>
</html>
<script type="text/javascript">
   function PasswordLength(source, clientside_arguments)
   {         
      if ((clientside_arguments.Value.Length < 3)  || ((clientside_arguments.Value.Length > 10))) <-- //could be wrong as i have not done java scripts in a while
      {
         clientside_arguments.IsValid=true;
      }
      else 
     {
	clientside_arguments.IsValid=false
      };
   }
</script>
 
public partial class TestValidation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    public void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
    {
        if ((TextBox1.Text.Length < 3) || (TextBox1.Text.Length > 10))
        {
            //tell user he is a doofus 
        }
    } 
}

Open in new window

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Here you go
=======================================================================
 
Front code
 
=======================================================================
 
<body>
    <form id="form1" runat="server">
    <div>
      
      <asp:TextBox id="TextBox1" runat="server" />
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="TextBox1"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Doofus!"          
           runat="server" ValidationGroup="Test"/>
      <br /> 
      <asp:Button id="Button1" Text="Validate" runat="server" ValidationGroup="Test"/>    
    </div>
 
<asp:ValidationSummary ID="ValidationSummary1"
ShowMessageBox="true" ValidationGroup = "Test"
ShowSummary="false"
HeaderText="You must enter a value in the following fields:"
EnableClientScript="true"
runat="server"/>
    
    </form>
</body>
</html>
<script type="text/javascript">
   function PasswordLength(source, clientside_arguments)
   {         
      if ((clientside_arguments.Value.Length < 3)  || ((clientside_arguments.Value.Length > 10))) <-- //could be wrong as i have not done java scripts in a while
      {
         clientside_arguments.IsValid=true;
      }
      else 
     {
	clientside_arguments.IsValid=false
      };
   }
</script>
 
=======================================================================
 
Code behind
 
=======================================================================
 
public partial class TestValidation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    public void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
    {
        if ((TextBox1.Text.Length < 3) || (TextBox1.Text.Length > 10))
        {
            //tell user he is a doofus 
        }
    } 
}

Open in new window

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
It seems like its working now - Only one more thing, when you do no enter anything, it does not show the error.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for the help!