Best practices around "Page_PreRender" and "Page_Load" events

M

Max2006

Hi,

Are there any best practices or recommendations around using
"Page_PreRender" vs "Page_Load"? We are thinking to completely switch to
Page_PreRender event to handle page's controls initialization requirements.

I went through some asp.net page life cycle documentations (and diagrams)
and it seems that we can safely move all Page_Load codes to Page_PreRender.
Is there any work that we can only do in Page_Load and cannot do it in
Page_PreRender?

A link to an online article would greatly help.

Thank you,
Max
 
B

bruce barker

only if the logic belongs there. the simplified cycle is:

oninit - use to init controls before postback data loaded

onload - after postback data applied to controls

onclick/etc - server events fired

prerender - after server events

render - produce html

general control init should be done in oninit. onload is used if
controls use viewstate (bad practice - should only be done with
intranets) or for postback data handling.


-- bruce (sqlwork.com)
 
W

Walter Wang [MSFT]

Hi Max,

Besides Bruce's input, here's my thoughts on this:

* Initialization code that runs in first page load (non-postback) is
normally in Page_Load (http://support.microsoft.com/kb/317794)

* Normally you need to register client script in PreRender (<<Developing
Microsoft ASP.NET Server Controls and Components>>, chapter "Client Script
- Related API"; and this also applies when you're using AJAX:
http://weblogs.asp.net/leftslipper/archive/2006/11/13/HOWTO_3A00_-Write-cont
rols-compatible-with-UpdatePanel-without-linking-to-the-ASP.NET-AJAX-DLL.asp
x)


Hope this helps.


Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
W

Walter Wang [MSFT]

Hi Max,

I'm writing to check the status of this post. Please reply to let us know.
Thanks.


Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
M

Max2006

Hi Walter,

Your response helped me; however I was looking for an actual best practices
guidelines. From you post I have a feeling that there is no official
guideline?

Thank you,
Max
 
T

ThunderMusic

Hi
What we usually do here is the following :

/*************/
In Page_Load : We put the initialization for the objects (like the object
holding the logged user's infos) the postback events and pre render will
need. No display related stuff here because it may be changed by the server
events. Actually, we could move almost all the code from here to OnInit, but
we are doing it in Page_Load just to make it all in one place. Actually, the
only reason I see to put this stuff in the Page_Load is if you depend on
data from your page like a hidden field or something (to know where you're
at, like the id of what you are editing)
/*************/
In PreRender : It's like "Ok, I'm in that exact state, so what do I display
and how do I display it?"
/*************/

These are not "official" guidelines, but it works pretty well in all
situations.

I hope it helps

ThunderMusic
 
W

Walter Wang [MSFT]

Thanks ThunderMusic for the input.

Hi Max,

I think the "official" guidelines are scattered in following places:

* ASP.NET page life cycle
(http://msdn2.microsoft.com/en-us/library/ms178472.aspx)
* Crash courses on creating controls
(http://msdn2.microsoft.com/en-us/library/aa530687.aspx)

Of course, the official documentation on creating controls is already the
best place to look up information:

#Creating Controls
http://msdn2.microsoft.com/en-us/asp.net/aa336658.aspx


Hope this helps.


Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 

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

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top