Complete Lifecycle of an ASP.Net page and controls

body { color: #000; text-align: left; } tr.subhead { background-color:#cccccc;} th { padding:3px; } td { color: #000; padding:0 3px; text-align: left } th.alt { background-color:black; color: #fff;; } ul{background-color:#FFF; } .alt { background-color:#eeeeee } .mp, .mp a{color: #006600;} .pg, .pg a{color: #000099;} .uc, .uc a{color: #FF6600;} .cc, .cc a{color: #CC0000;} ul.mp,ul.pg,ul.uc,ul.cc{width: 50%;list-style:none; margin: 0;} ul.mp ul,ul.pg ul,ul.uc ul,ul.cc ul{list-style:none; margin: 0 15px;}

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

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) 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) 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) 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) 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) 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 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) End RenderControl(HtmlTextWriter writer)

Complete TraceCategoryMessagePageResolveAdapter()PageDeterminePostBackMode()aspx.pageBegin PreInitPageStart OnPreInit(EventArgs e)PageEnd OnPreInit(EventArgs e)MasterPageStart Construct()MasterPageEnd Construct()PageHasControls()PageStart RemovedControl(Control control)PageEnd RemovedControl(Control control)MasterPageStart FrameworkInitialize()MasterPageEnd FrameworkInitialize()MasterPageStart AddParsedSubObject(object obj)MasterPageCreateControlCollection()MasterPageStart AddedControl(Control control, int index)MasterPageEnd AddedControl(Control control, int index)MasterPageEnd AddParsedSubObject(object obj)MasterPageStart AddParsedSubObject(object obj)MasterPageStart AddedControl(Control control, int index)PageResolveAdapter()MasterPageEnd AddedControl(Control control, int index)MasterPageEnd AddParsedSubObject(object obj)MasterPageStart AddParsedSubObject(object obj)MasterPageStart AddedControl(Control control, int index)MasterPageEnd AddedControl(Control control, int index)MasterPageEnd AddParsedSubObject(object obj)UserControlStart Construct()UserControlEnd Construct()UserControlStart FrameworkInitialize()UserControlEnd FrameworkInitialize()CustomWebControlConstructor Test()CustomWebControlStart ApplyStyleSheetSkin(Page page)CustomWebControlEnd ApplyStyleSheetSkin(Page page)MasterPageStart AddParsedSubObject(object obj)MasterPageStart AddedControl(Control control, int index)MasterPageEnd AddedControl(Control control, int index)MasterPageEnd AddParsedSubObject(object obj)MasterPageStart AddParsedSubObject(object obj)MasterPageStart AddedControl(Control control, int index)MasterPageEnd AddedControl(Control control, int index)MasterPageEnd AddParsedSubObject(object obj)PageStart AddedControl(Control control, int index)PageEnd AddedControl(Control control, int index)aspx.pageEnd PreInitaspx.pageBegin InitPageResolveAdapter()MasterPageResolveAdapter()UserControlResolveAdapter()UserControlStart OnInit(EventArgs e)UserControlEnd OnInit(EventArgs e)UserControlStart TrackViewState()UserControlEnd TrackViewState()CustomWebControlResolveAdapter()CustomWebControlStart OnInit(EventArgs e)CustomWebControlEnd OnInit(EventArgs e)CustomWebControlStart TrackViewState()CustomWebControlEnd TrackViewState()MasterPageStart OnInit(EventArgs e)MasterPageEnd OnInit(EventArgs e)MasterPageStart TrackViewState()MasterPageEnd TrackViewState()PageStart OnInit(EventArgs e)PageEnd OnInit(EventArgs e)PageStart TrackViewState()PageEnd TrackViewState()aspx.pageEnd Initaspx.pageBegin InitCompletePageStart OnInitComplete(EventArgs e)PageEnd OnInitComplete(EventArgs e)aspx.pageEnd InitCompleteaspx.pageBegin PreLoadPageStart OnPreLoad(EventArgs e)PageEnd OnPreLoad(EventArgs e)aspx.pageEnd PreLoadaspx.pageBegin LoadPageStart OnLoad(EventArgs e)PagePage_Load(object sender, EventArgs e)PageEnd OnLoad(EventArgs e)MasterPageStart OnLoad(EventArgs e)MasterPagePage_Load(object sender, EventArgs e)MasterPageEnd OnLoad(EventArgs e)UserControlStart OnLoad(EventArgs e)UserControlPage_Load(object sender, EventArgs e)UserControlEnd OnLoad(EventArgs e)CustomWebControlStart OnLoad(EventArgs e)CustomWebControlEnd OnLoad(EventArgs e)aspx.pageEnd Loadaspx.pageBegin LoadCompletePageStart OnLoadComplete(EventArgs e)PageEnd OnLoadComplete(EventArgs e)aspx.pageEnd LoadCompleteaspx.pageBegin PreRenderPageStart EnsureChildControls()PageResolveAdapter()PageStart CreateChildControls()PageEnd CreateChildControls()PageEnd EnsureChildControls()PageStart OnPreRender(EventArgs e)PageEnd OnPreRender(EventArgs e)MasterPageStart EnsureChildControls()MasterPageResolveAdapter()MasterPageStart CreateChildControls()MasterPageEnd CreateChildControls()MasterPageEnd EnsureChildControls()MasterPageStart OnPreRender(EventArgs e)MasterPageEnd OnPreRender(EventArgs e)UserControlStart EnsureChildControls()UserControlResolveAdapter()UserControlStart CreateChildControls()UserControlEnd CreateChildControls()UserControlEnd EnsureChildControls()UserControlStart OnPreRender(EventArgs e)UserControlEnd OnPreRender(EventArgs e)CustomWebControlStart EnsureChildControls()CustomWebControlResolveAdapter()CustomWebControlStart CreateChildControls()CustomWebControlEnd CreateChildControls()CustomWebControlEnd EnsureChildControls()CustomWebControlStart OnPreRender(EventArgs e)CustomWebControlEnd OnPreRender(EventArgs e)aspx.pageEnd PreRenderaspx.pageBegin PreRenderCompletePageStart OnPreRenderComplete(EventArgs e)PageEnd OnPreRenderComplete(EventArgs e)aspx.pageEnd PreRenderCompletePageSaveViewState()MasterPageSaveViewState()UserControlSaveViewState()CustomWebControlSaveViewState()aspx.pageBegin SaveStatePageSaveViewState()PageHasControls()MasterPageSaveViewState()MasterPageHasControls()UserControlSaveViewState()UserControlHasControls()CustomWebControlSaveViewState()CustomWebControlHasControls()PageStart SavePageStateToPersistenceMedium(object state)PageResolveAdapter()PageEnd SavePageStateToPersistenceMedium(object state)aspx.pageEnd SaveStateaspx.pageBegin SaveStateCompletePageStart OnSaveStateComplete(EventArgs e)PageEnd OnSaveStateComplete(EventArgs e)aspx.pageEnd SaveStateCompleteaspx.pageBegin RenderPageCreateHtmlTextWriter(System.IO.TextWriter tw)PageStart RenderControl(HtmlTextWriter writer)PageStart Render(HtmlTextWriter writer)PageStart RenderChildren(HtmlTextWriter writer)MasterPageStart RenderControl(HtmlTextWriter writer)MasterPageStart Render(HtmlTextWriter writer)MasterPageStart RenderChildren(HtmlTextWriter writer)UserControlStart RenderControl(HtmlTextWriter writer)UserControlStart Render(HtmlTextWriter writer)UserControlStart RenderChildren(HtmlTextWriter writer)UserControlEnd RenderChildren(HtmlTextWriter writer)UserControlEnd Render(HtmlTextWriter writer)UserControlEnd RenderControl(HtmlTextWriter writer)CustomWebControlStart RenderControl(HtmlTextWriter writer)CustomWebControlStart Render(HtmlTextWriter writer)CustomWebControlStart RenderBeginTag(HtmlTextWriter writer)CustomWebControlStart AddAttributesToRender(HtmlTextWriter writer)CustomWebControlEnd AddAttributesToRender(HtmlTextWriter writer)CustomWebControlEnd RenderBeginTag(HtmlTextWriter writer)CustomWebControlStart RenderContents(HtmlTextWriter writer)CustomWebControlStart RenderChildren(HtmlTextWriter writer)CustomWebControlEnd RenderChildren(HtmlTextWriter writer)CustomWebControlEnd RenderContents(HtmlTextWriter writer)CustomWebControlStart RenderEndTag(HtmlTextWriter writer)CustomWebControlEnd RenderEndTag(HtmlTextWriter writer)CustomWebControlEnd Render(HtmlTextWriter writer)CustomWebControlEnd RenderControl(HtmlTextWriter writer)MasterPageEnd RenderChildren(HtmlTextWriter writer)MasterPageEnd Render(HtmlTextWriter writer)MasterPageEnd RenderControl(HtmlTextWriter writer)PageEnd RenderChildren(HtmlTextWriter writer)PageEnd Render(HtmlTextWriter writer)PageEnd RenderControl(HtmlTextWriter writer)aspx.pageEnd RenderPageCreateHtmlTextWriter(System.IO.TextWriter tw)

Subscribe to TSD

Don’t miss out on the latest posts. Sign up now to get access to the library of members-only posts.
jamie@example.com
Subscribe