快速业务通道

ASP.NET深入浅出系列2-页面生命周期详解

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

上个系列中介绍了页面生命周期的整体流程,可能有些读者还想更进一步了解整个生命周期的细节,限于篇幅我不可能讲到所有细节,也没必要,这里仅举几个例子,大家可以通过这几个例子学习一下页面生命周期的研究方式。

Control类中有如下事件

//   当服务器控件绑定到数据源时发生。

public event EventHandler DataBinding;

//   当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。

public event EventHandler Disposed;

//   当服务器控件初始化时发生;初始化是控件生存期的第一步。

public event EventHandler Init;

//   当服务器控件加载到 System.Web.UI.Page 对象中时发生。

public event EventHandler Load;

//   在加载 System.Web.UI.Control 对象之后、呈现之前发生。

public event EventHandler PreRender;

//   当服务器控件从内存中卸载时发生。

public event EventHandler Unload;

因为每个Page和绝大多书控件都是继承于这个Control类,所以他们都可以注册这些事件,如果我们提供了相应名字的方法,ASP.NET在编译时会帮我们注册相应的方法到事件中,比如我们如果在页面中写了如下方法

protected void Page_Init(object sender, EventArgs e)
  {
    Trace.Write("Page_Init");
  }

那ASP.NET在编译时会将这个方法注册到Control类的Init事件中,也就是当页面初始化的时候就会调用这个Page_Init方法。我们右键Page类“选转到定义”菜单可以看到Page的定义,这个定义中还有些事件

//   在页初始化完成时发生。

public event EventHandler InitComplete;

//   在页生命周期的加载阶段结束时发生。

public event EventHandler LoadComplete;

//   在页初始化开始时发生。

public event EventHandler PreInit;

//   在页 System.Web.UI.Control.Load 事件之前发生。

public event EventHandler PreLoad;

//   在呈现页内容之前发生。

public event EventHandler PreRenderComplete;

//   在页已完成对页和页上控件的所有视图状态和控件状态信息的保存后发生。

[EditorBrowsable(EditorBrowsableState.Advanced)]

public event EventHandler SaveStateComplete;

那我们如何知道这些事件谁先谁后呢,我们可以使用Trace方法检测。

首先创建一个项目网站,在default.aspx页面指令上加入Trace="true",然后拖上几个控件。

前端页面如下:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  Trace="true"%>
<!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="Button1" runat="server" Text="Button" onclick="Button1_Click"
oninit="Button1_Init" />
<asp:TextBox ID="TextBox1" runat="server" oninit="TextBox1_Init">
</asp:TextBox>
<asp:GridView
ID="GridView1" runat="server" ondatabinding="GridView1_DataBinding">
&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号