Introduction
By default, button controls in ASP.NET pages post back to the same page that contains
the button, where you can write an event handler for the post. In most cases this is the
desired behavior, but occasionaly you will also want to be able to post to another page in
your application. The Server.Transfer method can be used to move between pages, however
the URL doesn't change. Instead, the cross page posting feature in ASP.NET 2.0 allows
you to fire a normal post back to a different page in the application. In the target page,
you can then access the values of server controls in the source page that initiated the post
back.
Implementation
To use cross page posting, you can set the PostBackUrl property of a Button, LinkButton
or ImageButton control, which specifies the target page. In the target page, you can then
access the PreviousPage property to retrieve values from the source page. By default, the
PreviousPage property is of type Page, so you must access controls using the FindControl
method. You can also enable strongly-typed access to the source page by setting the
@PreviousPageType directive in the target page to the virtual path or Type name of the
source page.
Here is a step-by-step guide for implementing the cross-page post back using controls
that implement the IButtonControl interface.
1 Create a Web Form and insert a Button control on it using the VS .NET designer.
2 Set the button's PostBackUrl property to the Web Form you want to post back. For
instance in this case it is "default.aspx"
Example of Cross page posting
<asp:Button ID="Button1" runat="server"
PostBackUrl="~/default.aspx" Text="Post to Home Page" />
When the PostBackUrl property of the IButtonControl is set, the ASP.NET framework
binds the corresponding HTML element to new JavaScript function named
WebForm_DoPostBackWithOptions. The corresponding HTML rendered by the ASP.NET
2.0 will look like this:
<input type="submit" name="Button1" value="Post to Home page"
onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("Button1", ",falseâ€,"default.aspx", false, false))"
id="Button1" />