ASP.net 的页面生命周期

本文详细介绍了ASP.NET页面生命周期的七个阶段,包括开始、页初始化、控件状态维护和还原等,并深入探讨了Page_Load和Onload事件的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个页面的生命周期大概有以下七个:

 

1. 开始:实例化页面,设置页面的Response,Request,IsPostBack属性,设置页面的UICultrue属性.

2. 页初始化:实例化控件,设置控件的Unique属性(PreInit事件àInit事件àInitComplete事件)

3. 控件状态维护和还原(加载期间):使用从视图状态和控件状态恢复的信息加载控件属性。(PreLoad事件àload事件)

4. 验证:验证期间将会调用所有控件的Validate()方法,同时设置Page.IsValid属性和所有控件的IsValid属性。

5. 事件处理

6. 页面的呈现(PreRender事件àSaveState方法àOnSaveCompleteàRender方法)

7. 卸载(对应UnLoad事件)

 

Page_Load Onload事件.

Onload事件是在System.Web.UI.Control类中定义的。

AutoEventWire=true的时候,Page_load实际上是this.Load+= new   EventHandler(this.Page_Load)

Control中的OnLoad代码如下:

protected internal virtual void OnLoad(EventArgs e)
{
    if (this.HasEvents())
    {
        EventHandler handler = this._events[EventLoad] as EventHandler;
        if (handler != null)
        {
            handler(this, e);
        }
    }
}

this.Load中的Load是事件的定义,代码如下:

[WebSysDescription("Control_OnLoad")]
public event EventHandler Load
{
    add
    {
        this.Events.AddHandler(EventLoad, value);
    }
    remove
    {
        this.Events.RemoveHandler(EventLoad, value);
    }
}

this.Events中的Event是属性,代码如下:

 

protected EventHandlerList Events
{
    [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
    get
    {
        if (this._events == null)
        {
            this._events = new EventHandlerList();
        }
        return this._events;
    }
}

这样在Page生命周期发执行OnLoad的时候,就会唤起Load事件,并执行用户定义的Page_Load方法

(前提是有调用base.OnLoad(e))

转载于:https://www.cnblogs.com/ptwlw/archive/2010/05/27/1745785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值