c# - What methods are executed in which order in this ASP.NET webforms page -


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 method page.onprerender (which method raise prerender event).
  • the method page_prerender automatically wired-up prerender event. event handler (for prerender 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 prerenderevent 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/connected prerender 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)  {  }