编程联盟 专业定做出售asp.net毕业设计毕业论文
频道导航.NET数据库Java网络编程语言WEB开发重点导航最新编程资料热门编程文章编程工具大集合下载精品电子书教程下载
出售asp.net毕业设计 出售asp.net毕业设计 出售asp.net毕业设计 出售asp.net毕业设计
首页>>开发资料>>ASp.net>> ASP.NET深入浅出系列2-页面生命周期详解

ASP.NET深入浅出系列2-页面生命周期详解增强型1G空间特价350元!

点击:1687
发布时间:2009-2-24 1:21:25
作者: 网络整理
来源: 网络收集


进入社区讨论   定做出售计算机毕业论文 asp.net毕业设计网

咨询毕业设计请点击我

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

  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",然后拖上几个控件。

  前端页面如下:

<%@PageLanguage="C#"AutoEventWireup="true" CodeFile="Default.aspx.cs"Inherits="_Default" Trace="true"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
  <title>无标题页</title>
</head>
<body>
  <formid="form1"runat="server">
  <div>
    <asp:ButtonID="Button1"runat="server"Text="Button"onclick="Button1_Click"
      oninit="Button1_Init"/>
    <asp:TextBoxID="TextBox1"runat="server"oninit="TextBox1_Init">
    </asp:TextBox>
    <asp:GridView
      ID="GridView1"runat="server"ondatabinding="GridView1_DataBinding">
    </asp:GridView>
  </div>
  </form>
</body>
</html>

  后台代码如下:

publicpartialclass_Default:System.Web.UI.Page
{
  protectedvoidPage_Load(objectsender,EventArgse)
  {
    string[]x={"1","2","3"};
    GridView1.DataSource=x;
    GridView1.DataBind();
    Trace.Write("Page_Load");
  }
  protectedvoidPage_Init(objectsender,EventArgse)
  {
    Trace.Write("Page_Init");
  }
  protectedvoidButton1_Click(objectsender,EventArgse)
  {
    Trace.Write("Button1_Click");
  }
  protectedvoidPage_PreInit(objectsender,EventArgse)
  {
    Trace.Write("Page_PreInit");
  }
  protectedvoidButton1_Init(objectsender,EventArgse)
  {
    Trace.Write("Button1_Init");
  }
  protectedvoidTextBox1_Init(objectsender,EventArgse)
  {
    Trace.Write("TextBox1_Init");
  }
  protectedvoidGridView1_DataBinding(objectsender,EventArgse)
  {
    Trace.Write("GridView1_DataBinding");
  }
}

  运行起来,我们可以看到如下图:

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

  通过图中显示我们可以分析出控件的_Init事件先于Page_Init,Page_Init先于Page_Load,Init的事件顺序按照控件在页面上位置从上到下的顺序开始调用,Page_Init事件最后触发,GridView1_DataBinding事件先于Page_Load事件。

  所以如果大家想研究事件的先后顺序可以再写些相应控件和事件即可。

文章来源:http://www.bcbbs.net/news/Content.aspx?id=31228
文章来源:http://www.bcbbs.net/news/Content.aspx?id=31228
asp.net毕业设计定做出售 asp.net毕业论文
收藏本文章 关闭本页
编程联盟 | 编程论坛 | 关于本站 | 站点地图 | 友情链接 | 联系我们|版权声明|购买本站广告
Powered by 编程联盟 2007-2010 bcbbs.net冀ICP备08005404号
空间赞助商:北京易德科技有限公司
编程联盟群:群1【39111008】 群2【60142030】群三【83882594】群四【62585405】群五【37260303】群六【32771492】群七【85894797】群八【42624779】欢迎讨论技术