Complete Lifecycle of an ASP.Net page and controls
Julian Voelcker raised a question on the MsWebDev mailing list the other day that I've been meaning to investigate for a while as it's something that I have to double check on every time I write a new custom control -the various lifecycles an ASP.Net page.
Many people have blogged about the lifecycle of an ASP.Net Page or Master Page but every time I need to find the complete lifecycle of a control it’s not so easy. Today I wrote a couple of test pages to generate a reference.
The pages are very simple, I just overrode every method I could find and wrote to the trace. For completeness when the method called its base I wrapped it with “Start MethodName” and “End MethodName” (if you look at the trace outputs below you will see why). I did this for the Master Page (.master), Page (.aspx), User Control (.ascx) and Web Control (.cs), the page structre was simple:
- Master Page 
- Page 
- User Control
- Web Control
 
 
- Page 
For clarity I’ve split the produced trace into 5 individual reference sections:
ASP.Net 2.0 Master Page Life Cycle
- Start Construct()
- End Construct()
- Start FrameworkInitialize()
- End FrameworkInitialize()
- Start AddParsedSubObject(object obj) 
- CreateControlCollection()
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End AddParsedSubObject(object obj)
- Start AddParsedSubObject(object obj) 
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End AddParsedSubObject(object obj)
- Start AddParsedSubObject(object obj) 
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End AddParsedSubObject(object obj)
- Start AddParsedSubObject(object obj) 
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End AddParsedSubObject(object obj)
- Start AddParsedSubObject(object obj) 
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End AddParsedSubObject(object obj)
- ResolveAdapter()
- Start OnInit(EventArgs e)
- End OnInit(EventArgs e)
- Start TrackViewState()
- End TrackViewState()
- Start OnLoad(EventArgs e) 
- Page_Load(object sender, EventArgs e)
 
- End OnLoad(EventArgs e)
- Start EnsureChildControls() 
- ResolveAdapter()
- Start CreateChildControls()
- End CreateChildControls()
 
- End EnsureChildControls()
- Start OnPreRender(EventArgs e)
- End OnPreRender(EventArgs e)
- SaveViewState()
- SaveViewState()
- HasControls()
- Start RenderControl(HtmlTextWriter writer) 
- Start Render(HtmlTextWriter writer) 
- Start RenderChildren(HtmlTextWriter writer)
- End RenderChildren(HtmlTextWriter writer)
 
- End Render(HtmlTextWriter writer)
 
- Start Render(HtmlTextWriter writer) 
- End RenderControl(HtmlTextWriter writer)
ASP.Net 2.0 Page Life Cycle
- ResolveAdapter()
- DeterminePostBackMode()
- Begin PreInit 
- Start OnPreInit(EventArgs e)
- End OnPreInit(EventArgs e)
- HasControls()
- Start RemovedControl(Control control)
- End RemovedControl(Control control)
- ResolveAdapter()
- Start AddedControl(Control control, int index)
- End AddedControl(Control control, int index)
 
- End PreInit
- Begin Init 
- ResolveAdapter()
- Start OnInit(EventArgs e)
- End OnInit(EventArgs e)
- Start TrackViewState()
- End TrackViewState()
 
- End Init
- Begin InitComplete 
- Start OnInitComplete(EventArgs e)
- End OnInitComplete(EventArgs e)
 
- End InitComplete
- Begin PreLoad 
- Start OnPreLoad(EventArgs e)
- End OnPreLoad(EventArgs e)
 
- End PreLoad
- Begin Load 
- Start OnLoad(EventArgs e) 
- Page_Load(object sender, EventArgs e)
 
- End OnLoad(EventArgs e)
 
- Start OnLoad(EventArgs e) 
- End Load
- Begin LoadComplete 
- Start OnLoadComplete(EventArgs e)
- End OnLoadComplete(EventArgs e)
 
- End LoadComplete
- Begin PreRender 
- Start EnsureChildControls() 
- ResolveAdapter()
- Start CreateChildControls()
- End CreateChildControls()
 
- End EnsureChildControls()
- Start OnPreRender(EventArgs e)
- End OnPreRender(EventArgs e)
 
- Start EnsureChildControls() 
- End PreRender
- Begin PreRenderComplete 
- Start OnPreRenderComplete(EventArgs e)
- End OnPreRenderComplete(EventArgs e)
 
- End PreRenderComplete
- SaveViewState()
- Begin SaveState 
- SaveViewState()
- HasControls()
- Start SavePageStateToPersistenceMedium(object state) 
- ResolveAdapter()
 
- End SavePageStateToPersistenceMedium(object state)
 
- End SaveState
- Begin SaveStateComplete 
- Start OnSaveStateComplete(EventArgs e)
- End OnSaveStateComplete(EventArgs e)
 
- End SaveStateComplete
- Begin Render 
- CreateHtmlTextWriter(System.IO.TextWriter tw)
- Start RenderControl(HtmlTextWriter writer) 
- Start Render(HtmlTextWriter writer) 
- Start RenderChildren(HtmlTextWriter writer)
- End RenderChildren(HtmlTextWriter writer)
 
- End Render(HtmlTextWriter writer)
 
- Start Render(HtmlTextWriter writer) 
- End RenderControl(HtmlTextWriter writer)
 
- End Render
- CreateHtmlTextWriter(System.IO.TextWriter tw)
ASP.Net 2.0 User Control Life Cycle
- Start Construct()
- End Construct()
- Start FrameworkInitialize()
- End FrameworkInitialize()
- ResolveAdapter()
- Start OnInit(EventArgs e)
- End OnInit(EventArgs e)
- Start TrackViewState()
- End TrackViewState()
- Start OnLoad(EventArgs e) 
- Page_Load(object sender, EventArgs e)
 
- End OnLoad(EventArgs e)
- Start EnsureChildControls() 
- ResolveAdapter()
- Start CreateChildControls()
- End CreateChildControls()
 
- End EnsureChildControls()
- Start OnPreRender(EventArgs e)
- End OnPreRender(EventArgs e)
- SaveViewState()
- SaveViewState()
- HasControls()
- Start RenderControl(HtmlTextWriter writer) 
- Start Render(HtmlTextWriter writer) 
- Start RenderChildren(HtmlTextWriter writer)
- End RenderChildren(HtmlTextWriter writer)
 
- End Render(HtmlTextWriter writer)
 
- Start Render(HtmlTextWriter writer) 
- End RenderControl(HtmlTextWriter writer)
ASP.Net 2.0 Web Control Life Cycle
- Constructor Test()
- Start ApplyStyleSheetSkin(Page page)
- End ApplyStyleSheetSkin(Page page)
- ResolveAdapter()
- Start OnInit(EventArgs e)
- End OnInit(EventArgs e)
- Start TrackViewState()
- End TrackViewState()
- Start OnLoad(EventArgs e)
- End OnLoad(EventArgs e)
- Start EnsureChildControls() 
- ResolveAdapter()
- Start CreateChildControls()
- End CreateChildControls()
 
- End EnsureChildControls()
- Start OnPreRender(EventArgs e)
- End OnPreRender(EventArgs e)
- SaveViewState()
- SaveViewState()
- HasControls()
- Start RenderControl(HtmlTextWriter writer) 
- Start Render(HtmlTextWriter writer) 
- Start RenderBeginTag(HtmlTextWriter writer) 
- Start AddAttributesToRender(HtmlTextWriter writer)
- End AddAttributesToRender(HtmlTextWriter writer)
 
- End RenderBeginTag(HtmlTextWriter writer)
 
- Start RenderBeginTag(HtmlTextWriter writer) 
- Start RenderContents(HtmlTextWriter writer) 
- Start RenderChildren(HtmlTextWriter writer)
- End RenderChildren(HtmlTextWriter writer)
 
- End RenderContents(HtmlTextWriter writer)
- Start RenderEndTag(HtmlTextWriter writer)
- End RenderEndTag(HtmlTextWriter writer)
- End Render(HtmlTextWriter writer)
 
- Start Render(HtmlTextWriter writer) 
- End RenderControl(HtmlTextWriter writer)
| Complete Trace | |
|---|---|
| Category | Message | 
| Page | ResolveAdapter() | 
| Page | DeterminePostBackMode() | 
| aspx.page | Begin PreInit | 
| Page | Start OnPreInit(EventArgs e) | 
| Page | End OnPreInit(EventArgs e) | 
| MasterPage | Start Construct() | 
| MasterPage | End Construct() | 
| Page | HasControls() | 
| Page | Start RemovedControl(Control control) | 
| Page | End RemovedControl(Control control) | 
| MasterPage | Start FrameworkInitialize() | 
| MasterPage | End FrameworkInitialize() | 
| MasterPage | Start AddParsedSubObject(object obj) | 
| MasterPage | CreateControlCollection() | 
| MasterPage | Start AddedControl(Control control, int index) | 
| MasterPage | End AddedControl(Control control, int index) | 
| MasterPage | End AddParsedSubObject(object obj) | 
| MasterPage | Start AddParsedSubObject(object obj) | 
| MasterPage | Start AddedControl(Control control, int index) | 
| Page | ResolveAdapter() | 
| MasterPage | End AddedControl(Control control, int index) | 
| MasterPage | End AddParsedSubObject(object obj) | 
| MasterPage | Start AddParsedSubObject(object obj) | 
| MasterPage | Start AddedControl(Control control, int index) | 
| MasterPage | End AddedControl(Control control, int index) | 
| MasterPage | End AddParsedSubObject(object obj) | 
| UserControl | Start Construct() | 
| UserControl | End Construct() | 
| UserControl | Start FrameworkInitialize() | 
| UserControl | End FrameworkInitialize() | 
| CustomWebControl | Constructor Test() | 
| CustomWebControl | Start ApplyStyleSheetSkin(Page page) | 
| CustomWebControl | End ApplyStyleSheetSkin(Page page) | 
| MasterPage | Start AddParsedSubObject(object obj) | 
| MasterPage | Start AddedControl(Control control, int index) | 
| MasterPage | End AddedControl(Control control, int index) | 
| MasterPage | End AddParsedSubObject(object obj) | 
| MasterPage | Start AddParsedSubObject(object obj) | 
| MasterPage | Start AddedControl(Control control, int index) | 
| MasterPage | End AddedControl(Control control, int index) | 
| MasterPage | End AddParsedSubObject(object obj) | 
| Page | Start AddedControl(Control control, int index) | 
| Page | End AddedControl(Control control, int index) | 
| aspx.page | End PreInit | 
| aspx.page | Begin Init | 
| Page | ResolveAdapter() | 
| MasterPage | ResolveAdapter() | 
| UserControl | ResolveAdapter() | 
| UserControl | Start OnInit(EventArgs e) | 
| UserControl | End OnInit(EventArgs e) | 
| UserControl | Start TrackViewState() | 
| UserControl | End TrackViewState() | 
| CustomWebControl | ResolveAdapter() | 
| CustomWebControl | Start OnInit(EventArgs e) | 
| CustomWebControl | End OnInit(EventArgs e) | 
| CustomWebControl | Start TrackViewState() | 
| CustomWebControl | End TrackViewState() | 
| MasterPage | Start OnInit(EventArgs e) | 
| MasterPage | End OnInit(EventArgs e) | 
| MasterPage | Start TrackViewState() | 
| MasterPage | End TrackViewState() | 
| Page | Start OnInit(EventArgs e) | 
| Page | End OnInit(EventArgs e) | 
| Page | Start TrackViewState() | 
| Page | End TrackViewState() | 
| aspx.page | End Init | 
| aspx.page | Begin InitComplete | 
| Page | Start OnInitComplete(EventArgs e) | 
| Page | End OnInitComplete(EventArgs e) | 
| aspx.page | End InitComplete | 
| aspx.page | Begin PreLoad | 
| Page | Start OnPreLoad(EventArgs e) | 
| Page | End OnPreLoad(EventArgs e) | 
| aspx.page | End PreLoad | 
| aspx.page | Begin Load | 
| Page | Start OnLoad(EventArgs e) | 
| Page | Page_Load(object sender, EventArgs e) | 
| Page | End OnLoad(EventArgs e) | 
| MasterPage | Start OnLoad(EventArgs e) | 
| MasterPage | Page_Load(object sender, EventArgs e) | 
| MasterPage | End OnLoad(EventArgs e) | 
| UserControl | Start OnLoad(EventArgs e) | 
| UserControl | Page_Load(object sender, EventArgs e) | 
| UserControl | End OnLoad(EventArgs e) | 
| CustomWebControl | Start OnLoad(EventArgs e) | 
| CustomWebControl | End OnLoad(EventArgs e) | 
| aspx.page | End Load | 
| aspx.page | Begin LoadComplete | 
| Page | Start OnLoadComplete(EventArgs e) | 
| Page | End OnLoadComplete(EventArgs e) | 
| aspx.page | End LoadComplete | 
| aspx.page | Begin PreRender | 
| Page | Start EnsureChildControls() | 
| Page | ResolveAdapter() | 
| Page | Start CreateChildControls() | 
| Page | End CreateChildControls() | 
| Page | End EnsureChildControls() | 
| Page | Start OnPreRender(EventArgs e) | 
| Page | End OnPreRender(EventArgs e) | 
| MasterPage | Start EnsureChildControls() | 
| MasterPage | ResolveAdapter() | 
| MasterPage | Start CreateChildControls() | 
| MasterPage | End CreateChildControls() | 
| MasterPage | End EnsureChildControls() | 
| MasterPage | Start OnPreRender(EventArgs e) | 
| MasterPage | End OnPreRender(EventArgs e) | 
| UserControl | Start EnsureChildControls() | 
| UserControl | ResolveAdapter() | 
| UserControl | Start CreateChildControls() | 
| UserControl | End CreateChildControls() | 
| UserControl | End EnsureChildControls() | 
| UserControl | Start OnPreRender(EventArgs e) | 
| UserControl | End OnPreRender(EventArgs e) | 
| CustomWebControl | Start EnsureChildControls() | 
| CustomWebControl | ResolveAdapter() | 
| CustomWebControl | Start CreateChildControls() | 
| CustomWebControl | End CreateChildControls() | 
| CustomWebControl | End EnsureChildControls() | 
| CustomWebControl | Start OnPreRender(EventArgs e) | 
| CustomWebControl | End OnPreRender(EventArgs e) | 
| aspx.page | End PreRender | 
| aspx.page | Begin PreRenderComplete | 
| Page | Start OnPreRenderComplete(EventArgs e) | 
| Page | End OnPreRenderComplete(EventArgs e) | 
| aspx.page | End PreRenderComplete | 
| Page | SaveViewState() | 
| MasterPage | SaveViewState() | 
| UserControl | SaveViewState() | 
| CustomWebControl | SaveViewState() | 
| aspx.page | Begin SaveState | 
| Page | SaveViewState() | 
| Page | HasControls() | 
| MasterPage | SaveViewState() | 
| MasterPage | HasControls() | 
| UserControl | SaveViewState() | 
| UserControl | HasControls() | 
| CustomWebControl | SaveViewState() | 
| CustomWebControl | HasControls() | 
| Page | Start SavePageStateToPersistenceMedium(object state) | 
| Page | ResolveAdapter() | 
| Page | End SavePageStateToPersistenceMedium(object state) | 
| aspx.page | End SaveState | 
| aspx.page | Begin SaveStateComplete | 
| Page | Start OnSaveStateComplete(EventArgs e) | 
| Page | End OnSaveStateComplete(EventArgs e) | 
| aspx.page | End SaveStateComplete | 
| aspx.page | Begin Render | 
| Page | CreateHtmlTextWriter(System.IO.TextWriter tw) | 
| Page | Start RenderControl(HtmlTextWriter writer) | 
| Page | Start Render(HtmlTextWriter writer) | 
| Page | Start RenderChildren(HtmlTextWriter writer) | 
| MasterPage | Start RenderControl(HtmlTextWriter writer) | 
| MasterPage | Start Render(HtmlTextWriter writer) | 
| MasterPage | Start RenderChildren(HtmlTextWriter writer) | 
| UserControl | Start RenderControl(HtmlTextWriter writer) | 
| UserControl | Start Render(HtmlTextWriter writer) | 
| UserControl | Start RenderChildren(HtmlTextWriter writer) | 
| UserControl | End RenderChildren(HtmlTextWriter writer) | 
| UserControl | End Render(HtmlTextWriter writer) | 
| UserControl | End RenderControl(HtmlTextWriter writer) | 
| CustomWebControl | Start RenderControl(HtmlTextWriter writer) | 
| CustomWebControl | Start Render(HtmlTextWriter writer) | 
| CustomWebControl | Start RenderBeginTag(HtmlTextWriter writer) | 
| CustomWebControl | Start AddAttributesToRender(HtmlTextWriter writer) | 
| CustomWebControl | End AddAttributesToRender(HtmlTextWriter writer) | 
| CustomWebControl | End RenderBeginTag(HtmlTextWriter writer) | 
| CustomWebControl | Start RenderContents(HtmlTextWriter writer) | 
| CustomWebControl | Start RenderChildren(HtmlTextWriter writer) | 
| CustomWebControl | End RenderChildren(HtmlTextWriter writer) | 
| CustomWebControl | End RenderContents(HtmlTextWriter writer) | 
| CustomWebControl | Start RenderEndTag(HtmlTextWriter writer) | 
| CustomWebControl | End RenderEndTag(HtmlTextWriter writer) | 
| CustomWebControl | End Render(HtmlTextWriter writer) | 
| CustomWebControl | End RenderControl(HtmlTextWriter writer) | 
| MasterPage | End RenderChildren(HtmlTextWriter writer) | 
| MasterPage | End Render(HtmlTextWriter writer) | 
| MasterPage | End RenderControl(HtmlTextWriter writer) | 
| Page | End RenderChildren(HtmlTextWriter writer) | 
| Page | End Render(HtmlTextWriter writer) | 
| Page | End RenderControl(HtmlTextWriter writer) | 
| aspx.page | End Render | 
| Page | CreateHtmlTextWriter(System.IO.TextWriter tw) | 
Liked this post? Got a suggestion? Leave a comment