ASP.NET Web Page应用深入探讨 三
2008-05-12 09:24:19.0
五、页面生存周期

  现在回到第三个标题中讲到的内容,我们讲到了HttpApplication的实例接收请求,并创建页面类的实例,实际上这个实例也就是动态编译的ASPX的类的一个实例,上一个标题中我们了解到ASPX实际上是代码绑定中类的子类,所以它继承了所有的protected方法。

  现在我们来看看VS.Net自动生成的CodeBehind类的代码,以此来开始我们对页面生命周期的探讨:

  

      #region Web Form Designer generated code

  override protected void OnInit(EventArgs e)

  { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

  // InitializeComponent();base.OnInit(e);}

  ///

/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。

  ///

  private void InitializeComponent()

  { this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);

  this.Load += new System.EventHandler(this.Page_Load);}

  #endregion

  这个就是使用VS.Net产生的Page的代码,我们来看,这里面有两个方法,一个是OnInit,一个是InitializeComponent,后者被前者调用,实际上这就是页面初始化的开始,在InitializeComponent中我们看到了控件的事件声明和Page的Load声明。

  下面是从MSDN中摘录的一段描述和一个页面生命周期方法和事件触发的顺序表:

  “每次请求 ASP.NET 页时,服务器就会加载一个 ASP.NET 页,并在请求完成时卸载该页。页及其包含的服务器控件负责执行请求并将 HTML 呈现给客户端。虽然客户端和服务器之间的通讯是无状态的和断续的,但是必须使客户感觉到这是一个连续执行的过程。”

  “这种连续性假象是由 ASP.NET 页框架、页及其控件实现的。回发后,控件的行为必须看起来是从上次 Web 请求结束的地方开始的。虽然 ASP.NET 页框架可使执行状态管理相对容易一些,但是为了获得连续性效果,控件开发人员必须知道控件的执行顺序。控件开发人员需要了解:在控件生命周期的各个阶段,控件可使用哪些信息、保持哪些数据、控件呈现时处于哪种状态。例如,在填充页上的控件树之前控件不能调用其父级。” “下表提供了控件生命周期中各阶段的高级概述。有关详细信息,请点击表中的链接。”

  阶段 控件需要执行的操作 要重写的方法或事件初始化 初始化在传入 Web 请求生命周期内所需的设置。请参阅处理继承的事件。 Init 事件(OnInit 方法)

  加载视图状态 在此阶段结束时,就会自动填充控件的 ViewState 属性,详见维护控件中的状态中的介绍。控件可以重写 LoadViewState 方法的默认实现,以自定义状态还原。 LoadViewState 方法处理回发数据 处理传入窗体数据,并相应地更新属性。请参阅处理回发数据。

  注意 只有处理回发数据的控件参与此阶段。 LoadPostData 方法 (如果已实现IPostBackDataHandler)


本文引用的地址为IT专家网
文章评论
[以下网友留言只代表其个人观点,不代表中华网的观点或立场]
发表评论
昵 称:
主 页:
内 容:
表 情: