Ways to Pass Data Between Web Forms
In this blog post, i will be showing different ways to pass data between webforms.
We will talk in details about each one and which kind of data it could store.
Querystrings:
To Read the value of "id" in WebForm2, you should use the below code
Now queryStringID will hold the data from the querystring.
Cookies:
AS you might already know, cookies are small text files
stored in the client machine. Cookies can only store up to approximately 4 kbs.
Once the cookie is stored into the client machine, each request from the client
to your application, the web browser will look for the cookie and send it via the
Request Object.
Ex: To store a value of TextBox1.Text inside the cookie use the below code
Now in webform2 page_load event, you should write the below code to get the value
Session Variables:
By default, session variables are stored in the webserver's memory. Session variables
are unique per each user.
Ex: To store a value inside a session variable use the below code
To retrieve the value from WebForm2 use the below code
Cross Page Posting (ASP.NET 2.0):
Cross page posting was introduced in ASP.NET 2.0. I already have a blog post about it.
Ex: The same example is taken from my previous blog post
Set the Button1 PostBackUrl property to WebForm2.aspx
Now in WebForm2.aspx, Write the below code to get the value of textbox1
Submit Form:
You can submit the form in Webform1.aspx to webform2.aspx. In that case, you can retrieve
all the WebForm1's form element from webform2. What we will do in the below example
is to add another form ( not a server side one) which will have two HTML controls;
the first is an submit control the second is a hidden field which will have the value of TextBox1
web server control to be posted to webform2
Ex: now the HTML code of webform1 will look like below
Of course you realized the we handled the onclick event of the submit button which
will call a javascript function to copy the value of TextBox1 into the hidden field
(Hidden1) in order to post it to webform2. Also you so in the second form tag the
action attribute in which we specified to which page the second form (SubmittedForm)
will be posted.
Add the below javascript code inside the <head> tag of WebForm1
Now you retrieve the value of "Hidden1" hidden field in webform 2 using the below
code
Server.Transfer & Server.Execute:
These two functions take 2 parameters; the first is the webform name
to which you want to redirec the user the second is a bool parameter to specify
if you want the form to be reserved.
Now in webform2 page_load event use the below code to get the value of TextBox1
Same Code for Server.Execute..
Different techniques could be implemented, it all depends on what serves you most!
We all know that Http is stateless, so data should be stored somewhere in order
to be able to retrieve it.
We all know that Http is stateless, so data should be stored somewhere in order
to be able to retrieve it.
1. Query String
2. Cookies
3. Session variables
4. Cross Page Posting
5. Submit form
6. Server.Transfer or Server.Execute
2. Cookies
3. Session variables
4. Cross Page Posting
5. Submit form
6. Server.Transfer or Server.Execute
We will talk in details about each one and which kind of data it could store.
Querystrings:
Using Query string variables, you can pass data between
webforms. below is an example
Ex: Suppose you want to pass the TextBox1.Text variable from WebForm1 to WebForm2
on button click event.
webforms. below is an example
Ex: Suppose you want to pass the TextBox1.Text variable from WebForm1 to WebForm2
on button click event.
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("WebForm2.aspx?id=" + TextBox1.Text);
}
{
Response.Redirect("WebForm2.aspx?id=" + TextBox1.Text);
}
To Read the value of "id" in WebForm2, you should use the below code
string queryStringID = Request.QueryString["id"];
Now queryStringID will hold the data from the querystring.
Cookies:
AS you might already know, cookies are small text files
stored in the client machine. Cookies can only store up to approximately 4 kbs.
Once the cookie is stored into the client machine, each request from the client
to your application, the web browser will look for the cookie and send it via the
Request Object.
Ex: To store a value of TextBox1.Text inside the cookie use the below code
protected void Button1_Click(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("UserName");
cookie.Value = TextBox1.Text;
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
Response.Redirect("WebForm2.aspx");
}
{
HttpCookie cookie = new HttpCookie("UserName");
cookie.Value = TextBox1.Text;
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
Response.Redirect("WebForm2.aspx");
}
Now in webform2 page_load event, you should write the below code to get the value
if(Request.Cookies["UserName"] != null)
Response.Write(Request.Cookies["UserName"].Value);
Response.Write(Request.Cookies["UserName"].Value);
Session Variables:
By default, session variables are stored in the webserver's memory. Session variables
are unique per each user.
Ex: To store a value inside a session variable use the below code
protected void Button1_Click(object sender, EventArgs e)
{
Session["UserName"] = TextBox1.Text;
Response.Redirect("WebForm2.aspx");
}
{
Session["UserName"] = TextBox1.Text;
Response.Redirect("WebForm2.aspx");
}
To retrieve the value from WebForm2 use the below code
Response.Write(Session["UserName"]);
Cross Page Posting (ASP.NET 2.0):
Cross page posting was introduced in ASP.NET 2.0. I already have a blog post about it.
Ex: The same example is taken from my previous blog post
Set the Button1 PostBackUrl property to WebForm2.aspx
Now in WebForm2.aspx, Write the below code to get the value of textbox1
TextBox txtFirstPage = (TextBox)(PreviousPage.FindControl("TextBox1"));
Response.Write(String.Format("You wrote {0} in Page1",txtFirstPage.Text));
Response.Write(String.Format("You wrote {0} in Page1",txtFirstPage.Text));
Submit Form:
You can submit the form in Webform1.aspx to webform2.aspx. In that case, you can retrieve
all the WebForm1's form element from webform2. What we will do in the below example
is to add another form ( not a server side one) which will have two HTML controls;
the first is an submit control the second is a hidden field which will have the value of TextBox1
web server control to be posted to webform2
Ex: now the HTML code of webform1 will look like below
<form id="Form1" method="post" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
<form name="SubmittedForm" action="WebForm2.aspx"method="post">
<input id="Submit1" type="submit" value="submit"onclick="CopyTextToHiddenField()" />
<input name="Hidden1" type="hidden" />
</form>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
<form name="SubmittedForm" action="WebForm2.aspx"method="post">
<input id="Submit1" type="submit" value="submit"onclick="CopyTextToHiddenField()" />
<input name="Hidden1" type="hidden" />
</form>
Of course you realized the we handled the onclick event of the submit button which
will call a javascript function to copy the value of TextBox1 into the hidden field
(Hidden1) in order to post it to webform2. Also you so in the second form tag the
action attribute in which we specified to which page the second form (SubmittedForm)
will be posted.
Add the below javascript code inside the <head> tag of WebForm1
<script language="javascript">
function CopyTextToHiddenField()
{
var textbox1Value = document.getElementById("<%=TextBox1.ClientID%>").value;
document.forms[1].document.getElementById("Hidden1").value = textbox1Value;
}
</script>
function CopyTextToHiddenField()
{
var textbox1Value = document.getElementById("<%=TextBox1.ClientID%>").value;
document.forms[1].document.getElementById("Hidden1").value = textbox1Value;
}
</script>
Now you retrieve the value of "Hidden1" hidden field in webform 2 using the below
code
Response.Write(Request.Form["Hidden1"]);
Server.Transfer & Server.Execute:
These two functions take 2 parameters; the first is the webform name
to which you want to redirec the user the second is a bool parameter to specify
if you want the form to be reserved.
Ex:
protected void Button1_Click1(object sender, EventArgs e)
{
Server.Transfer("WebForm2.aspx", true);
}
{
Server.Transfer("WebForm2.aspx", true);
}
Now in webform2 page_load event use the below code to get the value of TextBox1
Response.Write(Request.Form["TextBox1"]);
Same Code for Server.Execute..