Various Ways to Pass Data Among Web Forms


This article helps to list the most used ways to pass or transfer data among multiple web pages or an entire web site.

The important part of the website development is how to manage data transfer across web pages. As you all know, the Hypertext Transfer Protocol (HTTP) is the transport protocol or the application layer above TCP/IP that is responsible for each server and client request; it is stateless. It does not keep any data information for the next page response-request; the connection is closed from the server. So to overcome this problem there are some techniques that help to maintain the data across each request.

Getting Started

There are various ways to pass data information across pages. Let's start.

1. Cookies

   A small piece of information or message sent by the web server to the web browser during a web request,
   that is stored on the user's system in the form of a text file. This is the method used most often to store data.

   How to use Cookie:

   HttpCookie UserCookie = new HttpCookie("User");
   UserCookie.Value = txtName.Text;
   UserCookie.Expires = DateTime.Now.AddHours(1);

   How to retrieve a Cookie value:

   lblMsg.Text = Request.Cookies["User"].Value;

2. QueryString

   Another way or method to pass data among web pages through URL's is:

   The section beyond the part marked in red is where the query string starts, using a question mark (?) as separator.

   Using "&" we can pass multiple query strings.    

   The following is a sample use of a Query String:

   Response.Redirect(String.Format("RetrieveData.aspx?user={0}&id={1}", txtName.Text, 1));

   The following is a sample of how to retrieve a Query String value:

   if (Request.QueryString["user"] != null)
        lbl2.Text = Request.QueryString["user"];

3. Sessions

   The most acceptable and secure method is by using Session variables.

   The following is a sample use of a Session:

   Session["user"] = txtName.Text;
   Session["id"] = 1;
   List<string> colors = new List<string>();
   Session["colors"] = colors;
   colors = null;

   The following sample of how to retrieve a Session value:

   if (Session["user"] != null)
      lbl3.Text = Session["user"].ToString();

   if (Session["colors"] != null)
      List<string> col = new List<string>();
      col = (List<string>) Session["colors"];
      foreach (var item in col
         lbl3.Text += " " + item + ", ";
      col = null;

4. Cross-Page Posting

   Another technique used to post from one page to another page is by setting the PostBackUrl property to the target page.

   The PreviousPage property in the target page contains a reference to the source page.    
   The following is a sample of how to use Cross-Page Posting:

   <asp:Button ID="btnPage2" Text="Call Page2" runat="server" width="132px" PostBackUrl="~/RetrieveData.aspx" />

   The following is a sample of how to use a Cross-Page Posting value:

   if (Page.PreviousPage != null)
      DropDownList ddl = (DropDownList)Page.PreviousPage.FindControl("ddl1");
      if (ddl != null)
        lbl4.Text = ddl.SelectedItem.Text;
        lbl4.ForeColor = System.Drawing.Color.FromName(lbl4.Text);

5. Server.Transfer

   Using this technique, form values of one page can be accessed in another page by enabling the second parameter to true.

   Also, the same for the Server.Execute method.

   The following is a sample of how to use Server.Transfer:

   protected void btnPage2_Click(object sender, EventArgs e) {
   Server.Transfer("RetrieveData.aspx", true); }

   The following is a sample of how to use a Server.Transfer value:

   if (Request.Form["ddl1"] != null)
     lbl5.Text = Request.Form["ddl1"];

More methods exist, such as Submit Form, Context.Handler, Static variables, Saving data to XML, Text file to a Database and later retrieve it another form and so on.


Hope you all like it, post your comments also.

Thank you!