Web Form validation with 2 forms on a single page

Discussion in 'ASP .Net' started by iMedia User, Nov 5, 2003.

  1. iMedia User

    iMedia User Guest

    I have a site where I want to use the Web form validators in two separate
    forms on a single page. One form allows existing users to log in while the
    second one allows new users to register. The problem is that if I use the
    Web Form validation tags, it treats them all as one form (ie...if someone is
    trying to use the login form, they get an error saying that they have to
    enter values in the registration form and vice-versa).

    Any ideas on how to handle this?
     
    iMedia User, Nov 5, 2003
    #1
    1. Advertising

  2. 19765604

    Hi,

    On the client, you need to use a function named ValidatorEnable to turn
    specific validators on or off. On the server, you need to override the
    Validate event and add code to enable/disable specific validators.

    Notice that I'm careful to replicate the enable/disable state of each
    validator in the server Validate event to be the same state as it was on
    the client. Errors here could cause bugs that are hard to track down.

    The following sample uses two text boxes for users to login & two for new
    users to sign up. All four have required field validators. (with this
    simple example, it would have been more elegant to use just one set of two
    text boxes. However, I expect that your login & sign-up sections are
    different from each other).

    This whole sample has almost no error handling since it's just a sample.
    The "broken" mode merely turns on all validators on the server & blocks
    almost any activity,


    **** CODE-BEHIND

    Public Overrides Sub Validate()
    RequiredFieldValidator1.Enabled = (Mode.Value = "Broken" Or Mode.Value
    = "Login")
    RequiredFieldValidator2.Enabled = (Mode.Value = "Broken" Or Mode.Value
    = "Login")
    RequiredFieldValidator3.Enabled = (Mode.Value = "Broken" Or Mode.Value
    = "NewUser")
    RequiredFieldValidator4.Enabled = (Mode.Value = "Broken" Or Mode.Value
    = "NewUser")
    MyBase.Validate()
    End Sub



    **** ASPX PAGE

    <HTML>
    <HEAD>
    <title>ValidatedLogin1</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5"
    name="vs_targetSchema">
    <script>

    function ToLogin() {
    Form1.Mode.value = "Broken"
    Form1.Button1.value = "Login";
    Form1.Button2.value = "New visitors click here";
    Form1.TextBox1.disabled="";
    Form1.TextBox2.disabled="";
    Form1.TextBox3.disabled="disabled";
    Form1.TextBox4.disabled="disabled";
    Form1.TextBox1.style.visibility = "";
    Form1.TextBox2.style.visibility = "";
    Form1.TextBox3.style.visibility = "hidden";
    Form1.TextBox4.style.visibility = "hidden";
    ValidatorEnable(RequiredFieldValidator1, true);
    ValidatorEnable(RequiredFieldValidator2, true);
    ValidatorEnable(RequiredFieldValidator3, false);
    ValidatorEnable(RequiredFieldValidator4, false);
    Form1.TextBox3.value="";
    Form1.TextBox4.value="";
    Form1.Mode.value = "Login"
    }

    function ToNewUser() {
    Form1.Mode.value = "Broken"
    Form1.Button1.value = "Click here if you already have an account";
    Form1.Button2.value = "Register new name and password";
    Form1.TextBox1.disabled="disabled";
    Form1.TextBox2.disabled="disabled";
    Form1.TextBox3.disabled="";
    Form1.TextBox4.disabled="";
    Form1.TextBox1.style.visibility = "hidden";
    Form1.TextBox2.style.visibility = "hidden";
    Form1.TextBox3.style.visibility = "";
    Form1.TextBox4.style.visibility = "";
    ValidatorEnable(RequiredFieldValidator1, false);
    ValidatorEnable(RequiredFieldValidator2, false);
    ValidatorEnable(RequiredFieldValidator3, true);
    ValidatorEnable(RequiredFieldValidator4, true);
    Form1.TextBox1.value="";
    Form1.TextBox2.value="";
    Form1.Mode.value = "NewUser"
    }

    function LoginClick() {
    if (Form1.Mode.value = "Broken")
    ToLogin();
    if (Form1.Mode.value = "NewUser")
    ToLogin();
    if (Form1.Mode.value = "Login")
    {
    if (typeof(Page_ClientValidate) == 'function')
    {
    Page_ClientValidate();
    if (Page_IsValid)
    Form1.submit();
    }
    else
    {
    Form1.submit()
    }
    }
    }

    function NewUserClick() {
    if (Form1.Mode.value = "Broken")
    ToNewUser();
    if (Form1.Mode.value = "Login")
    ToNewUser();
    if (Form1.Mode.value = "NewUser")
    {
    if (typeof(Page_ClientValidate) == 'function')
    {
    Page_ClientValidate();
    if (Page_IsValid)
    Form1.submit();
    }
    else
    {
    Form1.submit()
    }
    }
    }
    </script>
    </HEAD>
    <body onload="ToLogin();">
    <form id="Form1" method="post" runat="server">
    <P><INPUT id="Mode" type="hidden" name="Mode" runat="server">
    <br>
    <asp:textbox id="TextBox1"
    runat="server"></asp:textbox><asp:requiredfieldvalidator
    id="RequiredFieldValidator1" runat="server"
    ErrorMessage="RequiredFieldValidator"
    ControlToValidate="TextBox1"></asp:requiredfieldvalidator><BR>
    <asp:textbox id="TextBox2"
    runat="server"></asp:textbox><asp:requiredfieldvalidator
    id="RequiredFieldValidator2" runat="server"
    ErrorMessage="RequiredFieldValidator"
    ControlToValidate="TextBox2"></asp:requiredfieldvalidator><BR>
    <INPUT id="Button1" type="button" value="Button" name="Button1"
    onclick="LoginClick();"><BR>
    <hr>
    <BR>
    <INPUT id="Button2" type="button" value="Button" name="Button2"
    onclick="NewUserClick();"><BR>
    <asp:textbox id="TextBox3"
    runat="server"></asp:textbox><asp:requiredfieldvalidator
    id="RequiredFieldValidator3" runat="server"
    ErrorMessage="RequiredFieldValidator"
    ControlToValidate="TextBox3"></asp:requiredfieldvalidator><BR>
    <asp:textbox id="TextBox4"
    runat="server"></asp:textbox><asp:requiredfieldvalidator
    id="RequiredFieldValidator4" runat="server"
    ErrorMessage="RequiredFieldValidator"
    ControlToValidate="TextBox4"></asp:requiredfieldvalidator>
    <P></P>
    <P></P>
    </form>
    </body>
    </HTML>




    Thank you, Mike
    Microsoft, ASP.NET Support Professional

    Microsoft highly recommends to all of our customers that they visit the
    http://www.microsoft.com/protect site and perform the three straightforward
    steps listed to improve your computer's security.

    This posting is provided "AS IS", with no warranties, and confers no rights.

    --------------------
    > From: "iMedia User" <>
    > Subject: Web Form validation with 2 forms on a single page
    > Date: Wed, 5 Nov 2003 07:55:28 -0500
    > Lines: 10
    > X-Priority: 3
    > X-MSMail-Priority: Normal
    > X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
    > X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
    > Message-ID: <>
    > Newsgroups: microsoft.public.dotnet.framework.aspnet
    > NNTP-Posting-Host: bi01p1.nc.us.ibm.com 129.33.49.251
    > Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP12.phx.gbl
    > Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.aspnet:188679
    > X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet
    >
    > I have a site where I want to use the Web form validators in two separate
    > forms on a single page. One form allows existing users to log in while the
    > second one allows new users to register. The problem is that if I use the
    > Web Form validation tags, it treats them all as one form (ie...if someone

    is
    > trying to use the login form, they get an error saying that they have to
    > enter values in the registration form and vice-versa).
    >
    > Any ideas on how to handle this?
    >
    >
    >
     
    Mike Moore [MSFT], Nov 6, 2003
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Paul Wilson [MVP]

    Re: Patch - two server forms on single web page

    Paul Wilson [MVP], Jun 25, 2003, in forum: ASP .Net
    Replies:
    0
    Views:
    905
    Paul Wilson [MVP]
    Jun 25, 2003
  2. Matt
    Replies:
    14
    Views:
    4,114
    Chad Z. Hower aka Kudzu
    Jan 30, 2004
  3. Maziar Aflatoun
    Replies:
    2
    Views:
    459
    Greg Burns
    Sep 13, 2004
  4. Replies:
    1
    Views:
    381
    Scott Allen
    Oct 15, 2005
  5. bnp
    Replies:
    4
    Views:
    330
Loading...

Share This Page