i refactoring old website other day , stumbled upon scenario. have asp.net 3.5 c# webforms page. in code behind have event handler so:
protected override void onprerender(eventargs e) { }
on other hand, in markup, have:
<script language="c#" runat="server"> void page_prerender() { } </script>
question is: what lifecycle like? executed first? 1 of them executed?
two points upfront:
- the
onprerender
method not event handler. override of methodpage.onprerender
(which method raiseprerender
event). - the method
page_prerender
automatically wired-upprerender
event. event handler (forprerender
event).
order of invocation
the following code sample shows order of execution:
// code-behind protected override void onprerender(eventargs e) { // 1. code put here executed first // call base class' version, raise // prerender event base.onprerender(e); // 3. code put here executed last } // markup <script language="c#" runat="server"> void page_prerender() { // 2. code put here executed second } </script>
note inside onprerender()
base class invoked: base.onprerender()
. written above, if missing prerender
event not raised , event handlers therefore not called.
your code sample
in sample code, call base.onprerender
missing. means, prerender
event not raised , therefore (event handler) method page_prerender()
not called.
some more points consider
if have
page_prerender()
event handler in markup , in code-behind, 1 in code-behind called.if disable auto-wiring of events in page directive (e.g.
< % @ page autoeventwireup="false" ... % >
),page_prerender()
event handler not wired/connectedprerender
event , therefore not called.you can manually attach handlers events, e.g:
protected void page_load(object sender, eventargs e) { prerender += prerendereventhandler; } void prerendereventhandler(object sender, eventargs e) { }