Ways to Pass Data Between Webforms!

 In this blog post, i will be showing different ways to pass data between webforms. 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.
         
        1- Query String    
        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.
    
    1- 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.
                    
                   protected void Button1_Click(object sender, EventArgs e)
                   {
                        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.

    
    2- 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");
                             }
                      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);

    3- 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");
                                            }

                                        To retrieve the value from WebForm2 use the below code
    
                                            Response.Write(Session["UserName"]);

    4- 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));

    5- 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>
        
                            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>

                            Now you retrieve the value of "Hidden1" hidden field in webform 2 using the below code
            
                             Response.Write(Request.Form["Hidden1"]);   

     6- 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);
                                                                      }

            
                                                                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..

Hope this Helps

Published 26 November 2007 11:03 PM by haissam

Comments

# Christopher Steen said on 27 November, 2007 12:16 AM

MSBuild MSBuild Task for SharePoint - MakeCab [Via: Steve ] ASP.NET Ajax with the ASP.NET MVC Framework...

# Christopher Steen said on 27 November, 2007 12:16 AM

Link Listing - November 26, 2007

# nanilbabu said on 04 January, 2008 10:11 AM

 it is very nice keep it up

# Yurii said on 23 February, 2008 08:19 AM

Very nice article! Thanks

# Jitesh said on 26 February, 2008 06:10 AM

hi there,

       Can you help me to say How to maintain session between asp and asp.net pages? and also give code example that how to access ASP Session in Asp.net

Thanking you in advance..

Jitesh

Programmer

http://www.intelcs.com

# geo said on 07 March, 2008 03:20 PM

Thanks alot, this is the answer i was looking for

# Renaud said on 19 March, 2008 05:05 PM

You saved me of pulling my hair once more,

thanks

Renaud

# WamBlog said on 24 May, 2008 07:31 AM

Passare dati fra WebForm

# cheing said on 13 June, 2008 04:59 AM

if for menu how to passing ?

# WamBlog said on 01 November, 2008 07:47 AM

Nota Sul forum di asp.net ho trovato un riferimento ad un post si Haissam. Mi è sembrato molto ben fatto

# Saa said on 29 August, 2009 10:32 PM

WOW!

great job!

keep it up

# Sumit said on 05 November, 2009 05:18 AM

Very helpful post . Thanks

# lim said on 23 November, 2009 05:08 AM

nice..Thank u.. =)

# Asp.Net: Sending xml data from one page to other the asp.net page in Request Inputsstream object said on 25 July, 2013 02:26 PM

Pingback from  Asp.Net: Sending xml data from one page to other the asp.net page in Request Inputsstream object

This site

Search

Go

This Blog

Syndication

Sponsors

  • MaximumASP