Asp.Net Page Life Cycle
00:33Introduction
For ASP.NET developers, understanding the ASP.NET page lifecycle is important for many reasons, but primarily for knowing where to place particular methods, and when various page properties are set. However, it can often be difficult to remember and make sense out of all of the methods available in the page lifecycle. While there are scores of articles on the internet related to the internal mechanics of the page lifecycle, this article intends to begin by covering the basics and providing a simple and easy understanding of usage.
It can be difficult to remember exactly what happens and when during the ASP.NET page lifecycle. That in mind, often the easiest way to make sense out of a series of steps is to create an acronym. Microsoft shows us the basic steps of the ASP.NET page lifecycle below.
- Page Request
- Start
- Page Initialization
- Load
- Validation
- Postback event handling
- Rendering
- Unload
Putting together an acronym for these is easy enough. Since the Page Request technically isn't a part of the life cycle (it only indicates whether we actually will start the cycle or load a cached page) we won't include it in the acronym.
- S – Start
- I – Initialize
- L – Load
- V – Validate
- E – Event Handling
- R – Render
That gives us "SILVER", which is very easy to remember. However, it is important remember that the last part of the cycle is unload. You can remember it as "SILVER-U" or "SILVER-YOU" if that helps (but it just didn't quite fit into our acronym!). Now that it's easy to remember the order of steps for the page lifecycle, we'll summarize exactly what happens and what events are pertinent to each stage.
1. Start
This is where page properties such as
Request
, Response
, IsPostBack
and UICulture
are set. As a developer, you most likely won't really need to do anything in this stage of the cycle. If you need to access or override behavior for this step, use the PreInit
method to create or re-create dynamic controls, set a master page or theme or read or set profile property values. It is important to note that if the request is a postback, the values of the controls have not yet been restored from view state. If you set a control property at this stage, its value might be overwritten in the next event.2. Initialize
This stage can be very important to developers. Here, themes are applied, and unique ids are generated and set for controls. Developers have access to the
Init
, InitComplete
and PreLoad
methods in this stage. Microsoft's recommended usage for these methods is as follows:Init
InitComplete
Page
PreLoad
3. Load
This stage is perhaps the most utilized by developers. In this stage controls are loaded with information retrieved from view and control states. The
OnLoad
is the event method that fires during this stage. This is where you will want to set properties for all of the server controls on your page, request query strings, and establish database connections.4. Validation
If you have controls that require validation, they are validated here and you can now check the IsValid property of the control. The event associated with this is
Validate
, which contains one overloaded method that accepts a validation group string. The overloaded method instructs the controls in the specified group to validate.5. Event Handling
The event handling for server controls occurs during this stage. This means that events such as
Click
,SelectedIndexChanged
, etc are applied to your server controls, and, in the case of a postback, these event handlers are fired by the control. The accessible events of note in this stage are as follows:LoadComplete
PreRender
EnsureChildControls
DataSourceID
DataBind
method. It is important to note that thePreRender
SaveStateComplete
6. Render
Render is not really an event. Rather, the page object calls this method on each control, which in turn writes out the HTML markup for the control to the browser. This stage is keenly important to developers who create custom controls, because the standard approach is to override the
Render
method for the control in order to output the custom markup. If your control inherits from a standard ASP.NET server control, you probably won't need to override the Render
method unless you want to exhibit a different behavior than the control's default. This is outside the scope of this document, but for more reading, you can reference Microsoft's Developing Custom ASP.NET Server Controls. (http://msdn2.microsoft.com/en-us/library/zt27tfhy.aspx)7. Unload
This final event occurs first for each control, then, finally, for the page. At this point, all controls have been rendered to the output stream and cannot be changed. During this event any attempt to access the response stream will result in an exception being thrown. This event is primarily for cleanup routines such as closing open database connections and open file streams, or, event logging and other tasks.
0 comments :