Page Load event is called....

M

MooreSmnith

When I navigate to the next page using
Response.Rediect("MyNextPage.aspx") current page Page_Load event is called.
What I may wrongly understood is that post back will happen whenever there
is any server side event happens, resulting in Page_load event. Page_Load is
also happening when I navigate to the next page. That means Page_load will
always happen when I navigate to the next page. Please correct me If I have
totally misunderstood this concepts.
Moore Smith
 
C

Craig Deelsnyder

When I navigate to the next page using
Response.Rediect("MyNextPage.aspx") current page Page_Load event is
called.
What I may wrongly understood is that post back will happen whenever
there
is any server side event happens, resulting in Page_load event.
Page_Load is
also happening when I navigate to the next page. That means Page_load
will
always happen when I navigate to the next page. Please correct me If I
have
totally misunderstood this concepts.
Moore Smith

I think what you're saying is correct (I may not understand your
details). The Page_Load is called when the page is first loaded, or
posted back to, etc. Think of it as a Page object receives a request.
When a request comes in, it tries to find that page (via the URL) and
creates an instance of that Page class. This is because the web is
stateless, it has to recreate it each time (even tho .NET gives us a
little magic for keeping 'state' in other ways).

When you do a redirect, you are telling the browser in the current
response that the page it should load is somewhere else (a different URL);
the browser then makes a new (GET) request at this new URL, hence an
instance of your second page is created and loaded....

and the cycle goes on :)
 
E

EijiTek

Every ASP.NET page is an instance of a class and therefore each page has its
own life cycle. Each page has a Page_Load event that is called as part of
the life cycle of every page, not just on post back. If you want certain
code to only run when a postback occurs you can test for it with
Page.IsPostBack.

Response.Redirect results in a response being sent to the client,
instructing it (the client) to open a different page instead of the one
originally requested. Server.Transfer on the other hand occurs on the
server and skips the additional HTTP request but neither method will supress
the call to the Page_Load event handler on the next page.
 
M

MooreSmnith

My question is when the response.Redirect is executed, page_load event of
the page(Page 1) which has Response.Redirect and the Redirected(Page 2) page
Page_load event is getting called. I am not understanding why the the
Page_Load event of Page 1 is called. Calling Page 2 Page_Load evevnt is
understandable.
Thanks for your answers and helping me to understand this flow.
Moore.
 
E

EijiTek

As I mentioned, each page has a life cycle therefore, requesting a page
starts the life cycle. In order to perform a redirect you have to be
executing code from the first page.

Where in Page1 are you making the call to Response.Redirect()?
 
M

MooreSmnith

Yes,
I am making Response.Redirect from page 1.
Thanks for your response. To conclude, to redirect to different page it has
to postback itself.
Moore
 
E

EijiTek

A redirect is not a postback nor does it require a postback to function. A
postback only occurs when you submit the webform such as with a button press
or other server side event triggered by a client side action. Within the
life cycle of a page certain events are called by the ASP.NET runtime such
as OnInit(), OnLoad(), and OnPreRender() regardless of whether a postback
has occured or not.

As I mentioned in my previous post, you can check Page.IsPostBack to
determine if a postback occured if you have code that you only want to run
when a postback occurs. Performing a postback is not necessary to call
Response.Redirect or Server.Transfer though it it more common for the
redirection to occur after a postback.

Here's an example (not the greatest but it works) Say you have a production
system and you're replacing one page with another but you don't want to
update all of the links right now because there are too many to find them
all or multiple systems that you don't have control over reference the page.
You could add a call to Response.Redirect() to perform the redirection to
the replacement page as soon as the page is requested or you could place a
note on the page telling people that the page has been replaced by another
page and you provide a Button (call it RedirectButton) control that, when
clicked, will call RedirectButton_OnClick() which in turn calls
Response.Redirect(). In either scenario, you'll be requesting Page1 which
will redirect to Page2 which means that a new instance of Page1 will be
created, the code for the page will execute, then when redirected, a new
instance of Page2 will be created and its code will be executed. One
mechanism requires a postback while the other doesn't. Whether the page
needs to perform a postback is determined by the needs of your application.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top