-->

28 February 2020

ASP.NET Page Life Cycle

  Asp.Net CS By Example       28 February 2020

ASP.NET Page Life Cycle

 In this article we are exploring more about ASP.NET Page Life Cycle. Whenever web user request an ASP.NET page, a particular set of events is raised in a particular sequence. This sequence of events is called the page execution lifecycle. When a web page is requested from web user, it is loaded into the server memory, processed, and sent to the web browser. Then it is unloaded from the memory. At each of these steps, methods and events are available, which could be overridden according to the need of the application.

 The Page class creates a hierarchical tree of all the controls on the page. All the components on the page, except the directives, are part of this control tree. We can see the control tree by adding trace= "true" to the page directive.

The page life cycle phases are
    Initialization
    The controls Instantiation on the page
    Restoration and maintenance of the state
    Execution of the event handler codes
    Page rendering

 Understanding the page cycle helps in writing codes for making some specific thing happen at any stage of the page life cycle. It also helps in writing custom controls and initializing them at right time, populate their properties with view-state data and run control behavior code.

ASP.NET Page Life Cycle Events:
   At each stage of the page life cycle, the page raises some events, which could be coded. An event handler is basically a function or subroutine, bound to the event, using declarative attributes such as Onclick or handle. Following are the page life cycle events.

  PreInit - PreInit is the first event in page life cycle. It checks the IsPostBack property and determines whether the page is a postback. It sets the themes and master pages, creates dynamic controls, and gets and sets profile property values. This event can be handled by overloading the OnPreInit method or creating a Page_PreInit handler.

  Init - Init event initializes the control property and the control tree is built. This event can be handled by overloading the OnInit method or creating a Page_Init handler.

  InitComplete - InitComplete event allows tracking of view state. All the controls turn on viewstate tracking.

  LoadViewState - LoadViewState event allows loading view state information into the controls.

  LoadPostData - During this phase, the contents of all the input fields are defined with the <form> tag are processed.

  PreLoad - PreLoad occurs before the post back data is loaded in the controls. This event can be handled by overloading the OnPreLoad method or creating a Page_PreLoad handler.

  Load - The Load event is raised for the page first and then recursively for all child controls. The controls in the control tree are created. This event can be handled by overloading the OnLoad method or creating a Page_Load handler.

  LoadComplete - The loading process is completed, control event handlers are run, and page validation takes place. This event can be handled by overloading the OnLoadComplete method or creating a Page_LoadComplete handler.

  PreRender - The PreRender event occurs just before the output is rendered. By handling this event, pages and controls can perform any updates before the output is rendered.

  PreRenderComplete -As the PreRender event is recursively fired for all child controls, this event ensures the completion of the pre-rendering phase.

  SaveStateComplete - State of control on the page is saved. Personalization, control state and view state information is saved. The HTML markup is generated. This stage can be handled by overriding the Render method or creating a Page_Render handler.

  UnLoad - The UnLoad phase is the last phase of the page life cycle. It raises the UnLoad event for all controls recursively and lastly for the page itself. Final cleanup is done and all resources and references, such as database connections, are freed. This event can be handled by modifying the OnUnLoad method or creating a Page_UnLoad handler.

AspNetPageLifeCycle.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AspNetPageLifeCycle.aspx.cs" 
Inherits="LearnAsp.Net.ControlDemo.Asp.Net_Event.AspNetPageLifeCycle" %>

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Button ID="btnClick" runat="server" 
    Text="Click" OnClick="btnClick_Click" />
    <br />
    <asp:Label ID="lblMsg" runat="server" ></asp:Label>
    </div>
    </form>
</body>
</html> 

AspNetPageLifeCycle.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LearnAsp.Net.ControlDemo.Asp.Net_Event
{
    public partial class AspNetPageLifeCycle : System.Web.UI.Page
    {
        protected void Page_PreInit(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "PreInit";
        }
        protected void Page_Init(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "Init";
        }
        protected void Page_InitComplete(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "InitComplete";
        }
        protected override void OnPreLoad(EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/><br/>" + "PreLoad";
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "Load";
        }
        protected void btnClick_Click(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "btnSubmit_Click";
        }
        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "LoadComplete";
        }
        protected override void OnPreRender(EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "PreRender";
        }
        protected override void OnSaveStateComplete(EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "SaveStateComplete";
        }
        protected void Page_UnLoad(object sender, EventArgs e)
        {
            lblMsg.Text = lblMsg.Text + "<br/>" + "UnLoad";
        }  
    }
} 

  Output:
logoblog

Thanks for reading ASP.NET Page Life Cycle

Previous
« Prev Post

No comments:

Post a Comment

Please do not enter any spam link in the comment box.