• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 493
  • Last Modified:

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
0
introlux
Asked:
introlux
  • 10
  • 10
  • 5
  • +1
6 Solutions
 
crazymanCommented:
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.
0
 
CodeCruiserCommented:
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
0
 
MarkMyburghCommented:
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")]
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
introluxAuthor Commented:
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
0
 
MarkMyburghCommented:
which framework 1, 2, 3, 3.5?
0
 
MarkMyburghCommented:
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
}
}
0
 
CodeCruiserCommented:
You could use a regular expression validator.
0
 
MarkMyburghCommented:
sorry don't know why i thought this was a windows app:
below is an example of how to validate using the customer validator

<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" 
           OnClick="ValidateBtn_OnClick" 
           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>

Open in new window

0
 
introluxAuthor Commented:
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"
 
0
 
CodeCruiserCommented:
ServerValidation is the function which would be executed on the server when validating. Create this procedure in the codebehind on the server.
0
 
introluxAuthor Commented:
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))
 
0
 
CodeCruiserCommented:
This is what you need
System.Web.UI.WebControls.ServerValidateEventArgs
0
 
introluxAuthor Commented:
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
 
0
 
CodeCruiserCommented:
Mate, just replace this
private void ServerValidation(object sender, CancelEventArgs e)
with this
private void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
0
 
MarkMyburghCommented:
itolux, you come right there?
0
 
introluxAuthor Commented:
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"
 
0
 
CodeCruiserCommented:
make it friend instead of private.
0
 
introluxAuthor Commented:
what do you mean?
0
 
CodeCruiserCommented:
change this
private void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
to this
public void ServerValidation(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)

if it still does not help, upload your full code here.
0
 
introluxAuthor Commented:
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

0
 
CodeCruiserCommented:
remove this attribute
ClientValidationFunction="PasswordLength"


add a validation summary control to the website and configure it properly. What code have you written in the code behind? Post that code as well.
0
 
introluxAuthor Commented:
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

0
 
CodeCruiserCommented:
Replace
 //tell user he is a doofus
with
e.IsValid=False;
0
 
introluxAuthor Commented:
It seems like its working now - Only one more thing, when you do no enter anything, it does not show the error.
0
 
CodeCruiserCommented:
Set ValidateEmptyText to true.
0
 
introluxAuthor Commented:
Thanks for the help!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 10
  • 10
  • 5
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now