One of the development features that ASP.NET 1.x developers have ever wanted is to be able to submit a form, and have this form and all the control values post themselves to another page. This is something that is possible in ASP.NET 3.5, and it is quite simple process.
First, create a page called Page1.aspx that contains a simple form just like this:
Here you can clearly identify a Textbox to capture the name, a Calendar to capture the flight date, a Button to post it to the same page (Page1.aspx), a Button to post it to another page (Page2.aspx), and a Label to show the information when the page is posted back to itself.
It is important to notice that Button2 has an attribute called PostBackUrl which value is the page that will be posted back when clicked.
This code has to be added to Page1.aspx to implement the behavior when the Button1 is clicked:
At this point it is possible to run the application and to see what the first button does:
This is the traditional behavior, any page created in ASP.NET 1.0/1.1 simply posted to itself, and you handled the control values within this page instance. Button2 is able to post back the data and objects contained in Page1.aspx to Page2.aspx, but Page2.aspx must read if from somewhere. This is how Page2.aspx has to be implemented:

There are two ways to recover data from the previous page. The first one is using the FindControl method in the PreviousPage property using the text name of the previous page object as a parameter and performing a cast to assign it to a local variable. Then you can forget about previous page and work with the local variable as usual. But as I said before, there is another way to acomplish this...
To do this it is mandatory to expose your controls as public properties in Page1.aspx like in the figure:

Now it is possible to refer to these properties from Page2.aspx. To do this it is important to include the PreviousPageType directive (line 2) and the value of the VirtualPath attribute must be the previous page. When it has been done, you can access the previous page properties directly from the PreviousPage property:
When running the application and selecting "Submit page to Page2.aspx", the result should look like this:

Finally, what happens if someone requests Page2.aspx before it works its way through Page1.aspx? It is actually quite easy to determine if the request is coming from Page1.aspx of if someone just hit Page2.aspx directly. You can work with the request through the use of the IsCrossPagePostBack property that is quite similar to the IsPostBack property from ASP.NET 1.0/1.1. The IsCrossPagePostBack property enables you to check whether the request is from Page1.aspx.
Examples taken from Professional ASP.NET 3.5 (Evjen, Hanselman, Rader)
Regards,
Carlos Figueroa - Quito, Ecuador