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
bruce barker - 23 Jul 2007 18:41 GMT
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)
> Hi,
>
[quoted text clipped - 11 lines]
> Thank you,
> Max
Walter Wang [MSFT] - 24 Jul 2007 03:36 GMT
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 (wawang@online.microsoft.com, 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.
Walter Wang [MSFT] - 27 Jul 2007 03:55 GMT
Hi Max,
I'm writing to check the status of this post. Please reply to let us know.
Thanks.
Regards,
Walter Wang (wawang@online.microsoft.com, 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.
Max2006 - 30 Jul 2007 21:07 GMT
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
> Hi Max,
>
[quoted text clipped - 12 lines]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
Walter Wang [MSFT] - 31 Jul 2007 05:06 GMT
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 (wawang@online.microsoft.com, 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.
ThunderMusic - 31 Jul 2007 13:37 GMT
Hi,
for an ASP.NET Page cycle, we found this page to be REALLY useful when we
developped our controls.
http://weblogs.asp.net/jeff/archive/2004/07/04/172683.aspx
I hope it helps
ThunderMusic
> Thanks ThunderMusic for the input.
>
[quoted text clipped - 26 lines]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
ThunderMusic - 30 Jul 2007 23:46 GMT
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
> Hi,
>
[quoted text clipped - 12 lines]
> Thank you,
> Max