By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,375 Members | 1,111 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,375 IT Pros & Developers. It's quick & easy.

Web Form validation with 2 forms on a single page

P: n/a
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?
Nov 17 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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" <xx*@us.ibm.com>
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: <eI**************@TK2MSFTNGP12.phx.gbl>
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!TK2MSFTN GP12.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?


Nov 17 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.