ARTICLE

Cross Page Postback in ASP.Net 2.0

Posted by Dipal Choksi Articles | Web Development August 11, 2006
In ASP.Net 2.0, cross-page post backs allow posting to a different web page, resulting in more intuitive, structured and maintainable code. In this article, we will explore the various options and settings for the cross page postback mechanism.
Reader Level:

ASP.Net 1.1 provides for web forms posting back only to themselves. In many situations, the solution requires posting to a different web page. The traditional workaround alternatives were to use Response.Redirect and/or Server.Transfer to move to a different page and simulate cross page post-back behavior.

 

ASP.Net 2.0 provides a feature known as Cross Page PostBack for a web form to post-back to a different web form (other than itself)

 

How to post to a different page

 

To set a web form to post back to a different web form, in the source web form, set the PostBackURL property of a control that implements IButtonControl (eg. Button, ImageButton, LinkButton) to the target web form. When the user clicks on this button control, the web form is cross-posted to the target web form. No other settings or code is required in the source web form.

 

Access source page info within the posted page: FindControl Method

 

The target web form resulting from the cross-page postback provides a non-null PreviousPage property. This property represents the source page and provides reference to the source web form and its controls.

 

The controls on the source page can be accessed via the FindControl method on the object returned by the PreviousPage property of the target page.

 

protected void Page_Load(object sender, EventArgs e)

{

    ...

    TextBox txtStartDate = (TextBox) PreviousPage.FindControl("txtStartDate ");

    ...

}

 

At this point the target page does not have any knowledge of the source page. The PreviousPage property is of the type Page. For accessing controls using FindControl, the developer has to presume a certain structure in the source web form. This approach using FindControl has a few limitations. FindControl is dependent on the developer to provide the ids of the controls to access. The code will stop working if the control id is changed in the source web form. The FindControl method can retrieve controls only within the current container. If you need to access a control within another control, you need to first get a reference to the parent control.

 

Access source page info within the posted page: @PreviousPageType Directive

 

There is another more direct option to get access to the source page controls if the source page is pre-determined. The @PreviousPageType directive can be used in the target page to strongly type the source page. The directive specifies the source page using either the VirtualPath attribute or the TypeName attribute. The PreviousPage property then returns a strongly typed reference to the source page. It allows access to the public properties of the source page.

 

SourcePage.aspx:

 

<form runat="server" >
...
<asp:textbox runat="server" id
="txtFirstName"/>
<
asp:textbox runat="server" id
="txtLastName"/>
<
asp:button runat="server" id="btnViewReport" Text="View Report" PostbackURL="~/targetpage.aspx"
/>
...

public string FirstName

{

    get { return txtFirstName.Text; }

}

...

 

TargetPage.aspx

 

<%@ PreviousPageType VirtualPath="sourcepage.aspx" %>

string strFirstName;
strFirstName = PreviousPage.FirstName
//Strongly Typed PreviousPage allows direct access to the public properties of the source page.

Access source page info within the posted page: @Reference Directive

 

A third option to access the source page in a strongly typed fashion from the target page is to include an @Reference directive to the source page in the target page and then cast the PreviousPage property to the type of the source page.

 

Detect Cross Page PostBacks: IsCrossPagePostBack Property

 

When the source page cross-posts back to the target page, and the target page accesses the source page, the source page is reloaded in memory and goes through all the life cycle stages except the rendering. This version of the source page object is used by the target page to access information on the source page.

 

The IsCrossPagePostBack property in the source page indicates if it is being reloaded in memory in response to a PreviousPage reference from a target page.

  1. Page A cross postback to Page B
  2. Page B accesses the PreviousPage : Page A is reloaded in memory and the IsCrossPostBack property on this object has the value "true".

The IsCrossPagePostBack property can be used in the source page to prevent un-necessary processing from repeating when the page is being reloaded for the PreviousPage reference.

The PreviousPage.IsCrossPagePostBack property can be used to deduce if the current page has been loaded as a result of a cross page postback.

Validations

 

If the Source Page has any Validator controls, the source page will need to have valid input when it has cross posted to the target page. The target page can contain the validation check for PreviousPage.IsValid to catch invalid submissions to the source page.

 

Usage Scenarios

           

Previous limitations restricted the postback to the self page in ASP.Net 1.1. In ASP.Net 2.0, you can use cross-page post backs to post to a different web page, resulting in more intuitive, structured and maintainable code.

 

Example - A web form collects criteria for a web-based report (such as Report Type, Report Start Date and Report End Date) and the form is cross page posted to another web form which generates the report based on the parameters passed in the previous page.

 

A typical use for cross page postback is where you need a page to post to different pages by clicking on different button controls in the same form. The target page is specified with each button control, allowing postbacks to various forms.

 

When posting across applications, cross page postbacks allow access to the posted form data, but do not provide access to the source page's controls and viewstate.

 

References

 

Note:

This article is for purely educational purposes and is a compilation of notes, material and understanding on this subject. Any resemblance to other material is an un-intentional coincidence and should not be misconstrued as malicious, slanderous, or any anything else hereof.

Login to add your contents and source code to this article
Article Extensions
Contents added by ARC Grouup on Feb 18, 2013
post comment
     

i really need for my project which require the user to retrieve word or pdf document from a table and display its content on the brower in asp.net

Posted by Ransford Adjetey Apr 02, 2011

I found in "Beginning ASP.Net 3.5 In C#" book a way to use the cross page postback by  casting  the PreviousPage property to the source page instead of putting it in the @PreviousPageType directive
And he wrote this code :
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
lblInfo.Text = "You came from a page titled " +
PreviousPage.Title + "<br />";
CrossPage1 prevPage = PreviousPage as CrossPage1;
if (prevPage != null)
{
lblInfo.Text += "You typed in this: " + prevPage.FullName;
}
}
}
But when i try to use this code an error happened and says "The type or namespace name'CrossPage1'could not be found (are you missing a using directive or an assembly reference?)"

so what can i do to resolve this error sir?

Posted by Ahmad Ezzat Oct 28, 2010

hi dipal i m a trainee developer i want to refresh page2 from page1 means without actuly clicking on the page2 i want to refresh it from page1 i think i want to creat page object but i cant access it plz help me by giving the code thanking u bye megha

Posted by megha visapurkar Mar 15, 2007

Hi,

Thanks for reply.

 I am using javascript at Passing parametrs one page to another page and

 validating of email text boxes and password textboxes.

                       and i have a question , At code behind i can maintain my data in cache  like cache("Connection")=con \\ connction object;

 and login information maintaing in sessions.

 using javascript can i do.if i write in javascript is it secured.

    if not secure    how can i write javascript code at CodeBehind. 

                             Thanking You.

                                                                   SrikanthReddy   

 

 

 

 

  

Posted by srikanth reddy Aug 25, 2006

Hi,

I assume you are referring to client-side scripting vs server side code. Each have their own usage and there are various opinions on their advantages/disadvantages.

In general, if you have a need to perform some operations which do not require a server round trip, client side script is suitable. An example would be displaying a confirmation message box to the user.

On the flip side, client side scripting could possibly lead to less security(which might be OK, depending in the specific situation). Also, you have to be careful regarding cross-browser support and situations where users have disabled client script on their browsers.

Hope this helps

 

Posted by Dipal Choksi Aug 22, 2006
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.