views:

169

answers:

3

Hi guys,

I'm working on a wizard-like set of page, and I'm relying on cross page postbacks to navigate between them.

I need to be able to trigger the Load event on the previous page in order to save the form data for the page.

I've been told that for situations of this sort all I had to do is access the PreviousPage property in the destination page and this would trigger the load event of the previous page but for some reason this doesn't seem to be working.

Is there anything else I can do to explicitly trigger the load event on the previouspage if the PreviousPage property is not null?

Thanks for your help,

Yong

A: 

This sounds a little confusing to me, but if you are wanting access to data, it's best to save that data into something that you can easily get to, like the ASP.NET session cache. So instead of going back to a previously navigated page in order to get data, you will cache the data the first time you reach the first page, and then when the user navigates to the 2nd page, it will have access to that information.

Andrew Smith
+1  A: 

Have you considered moving whatever persistence logic you're doing in the load of the Previous Page into a method on the page?

That way you can just hit:

if(PreviousPage != null)
   PreviousPage.DoThatSavingThing();

Obviously you'd need to type it to get the specific methods you add unless you added those to all pages.

TreeUK
Don't know why I didn't think of that, great idea. Thanks :)
yongjieli
A: 

To add - I tested using two methods of getting a "strongly-typed" previouspage.

  1. Added a reference to the destination: <%@ Reference Page="~/PreviousPageName.aspx" %>

  2. Added the PreviousPage directive on the destination: <%@ PreviousPageType VirtualPath="~/PreviousPageName.aspx" %>

When accessing the PreviousPage property in the destination, the Load event was fired on the PreviousPageName page (source).

Example (assuming there is a public property named Test on the PreviousPageName (Source page)):

protected void Page_Load(object sender, EventArgs e)
{
    if (PreviousPage != null)
    {
        //Using a reference, you have to cast:
        PreviousPageName x = (PreviousPageName)PreviousPage;
        string test = x.Test;

        //Using the PreviousPage directive, you do not need to cast:
        string test2 = PreviousPage.Test


    }
}
thedugas