SIGN UP MEMBER LOGIN:    
ARTICLE

Server.Transfer : Passing Values from One Page to Another Page

Posted by Sanjay Articles | Web Forms C# June 19, 2006
Some times, we want to pass values from one page to another page. There are many ways by which we can do this like: by using query string, or session variable, or Server.Transer etc. This article shows you, how to pass values from one page to another page by using Server.Transfer method.
Reader Level:
Download Files:
 

Some times, we want to pass values from one page to another page. There are many ways by which we can do this like: by using query string, or session variable, or Server.Transer etc.

Web Forms pages are classes in your application, and as such, you can create properties for them as you would any class. However, Web Forms pages have a very short lifetime, since they effectively exist only long enough to perform page processing. Properties on a Web Forms page therefore have limited use, since they exist only while the page is being processed. But if you transfer control from one page to another using specific techniques, the second page can still access properties on the first page.

This article shows you, how to pass values from one page to another page by using Server.Transfer() method.

Assign value to property of first page [ Form1.aspx ]

Declare Property : In first page, declare one or more read-only properties and return the property value you want to pass to the next page.

public string FirstName

{

          get

          { return txtFName.Value ; }

}

public string LastName

{

get

          { return txtLName.Value ; }

}

public string Address1

{

          get

          { return txtAdd1.Value ; }

}

public string Address2

{

          get

          { return txtAdd2.Value ; }

}

public NameValueCollection UserData

{

          get

          { return Request.Form; }

}

Call Server.Transer method to access second page.

private void btnForm2_ServerClick(object sender, System.EventArgs e)

{

          Server.Transfer("Form2.aspx");

}

 

private void btnForm3_ServerClick(object sender, System.EventArgs e)

{

          Server.Transfer("Form3.aspx");

}

To read property values from the source page in the called page

To get the property values of the first page from the called page, create an instance variable of the source page class. You then assign to it the HTTP object (an instance of the IHttpHandler class), the object that received the original request.

1. Create a global instance variable that is typed to the class of the source page.        

private Form1 frmSource;

2. In the Page_Load handler, get the source page from the Context.Handler object (IHttpHandler interface) and assign it to the variable that you created in step 1. You must cast the handler object to the type of the source page class.

frmSource = (Form1) Context.Handler;

3. Get the property values from the source page and use them as you would any object properties.

[ Form2.aspx.vb ]

lblFName.InnerText = frmSource.FirstName ;
lblLName.InnerText= frmSource.LastName;
lblAdd1.InnerText= frmSource.Address1 ;
lblAdd2.InnerText= frmSource.Address2;

[ Form3.aspx.vb ] : By using NameValueCollection : The Form property of Request object returns a NameValueCollection representing a collection of form variables. You can access value of any form field by its Id like userData["txtFName"].The NameValueCollection class is a member of System.Collections.Specialized namespace.

NameValueCollection userData = frmSource.UserData;
lblFName.InnerText = userData["txtFName"];
lblLName.InnerText= userData["txtLName"];
lblAdd1.InnerText= userData["txtAdd1"];
lblAdd2.InnerText= userData["txtAdd2"]; 

Reference: MSDN January 2006

Login to add your contents and source code to this article
share this article :
post comment
 

thank u so much Sanjay for the insight. Also Gigi, u made a useful point with FormKeys. When using Masterpages, the variable names of the Controls have Contentholder appended so u need such function.

Posted by DonBarry ajokubi Jan 10, 2011

Or you could do the following:

on the source form name the variable starting with let's say txtctrl:

txtctrlName, txtctrlAddress, txtctrlComment etc...

in the called page use:

string[] formKey = Request.Form.AllKeys;

foreach (string s in formKey)

{

if (s.Contains("txtctrlName"))

{

controlA.Text = Request.Form[s].ToString();

}

if (s.Contains("txtctrlAddress"))

{

controlB.Text = Request.Form[s].ToString();

}

...etc... or use switch instead of if blocks...

}

hope this helps.

Thanks,
George

Posted by Gigi Aug 02, 2010
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Become a Sponsor