ASP.NET 页面事件执行顺序介绍

代码如下:

  #region 控件事件 第六步
  protected void Button1_Click(object sender, EventArgs e)
  {
  //用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。
  //注意
  //在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性。
  }
  #endregion
  #region OnLoadComplete 第七步
  protected override void OnLoadComplete(EventArgs e)
  {
  //对需要加载页上的所有其他控件的任务使用该事件。
  base.OnLoadComplete(e);
  }
  #endregion
  #region OnPreRender 第八步
  protected override void OnPreRender(EventArgs e)
  {
  //在该事件发生前:
  //Page 对象会针对每个控件和页调用 EnsureChildControls。
  //设置了 DataSourceID 属性的每个数据绑定控件会调用 DataBind 方法。有关更多信息,请参见下面的数据绑定控件的数据绑定事件。
  //页上的每个控件都会发生 PreRender 事件。使用该事件对页或其控件的内容进行最后更改。
  base.OnPreRender(e);
  }
  #endregion
  #region SaveStateComplete 第九步
  protected override void OnSaveStateComplete(EventArgs e)
  {
  //在该事件发生前,已针对页和所有控件保存了 ViewState。将忽略此时对页或控件进行的任何更改。
  //使用该事件执行满足以下条件的任务:要求已经保存了视图状态,但未对控件进行任何更改。
  base.OnSaveStateComplete(e);
  }
  #endregion
  #region Render 第十步
  //Render
  //这不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。
  //如果创建自定义控件,通常要重写此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要重写 Render 方法。有关更多信息,请参见开发自定义 ASP.NET 服务器控件。
  //用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。
  #endregion
  #region OnUnload 第十一步
  protected override void OnUnload(EventArgs e)
  {
  //该事件首先针对每个控件发生,继而针对该页发生。在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。
  //对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。
  //注意
  //在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。
  base.OnUnload(e);
  }
  #endregion
  }

当页面进行回发时,如点击按钮,以上事件都会重新执行一次,这时的执行顺序为:
  1. OnPreInit
  2. OnInit
  3. OnInitComplete
  4. OnPreLoad
  5. Page_Load
  6. OnLoad
  7. Button_Click
  8. OnLoadComplete
  9. OnPreRender

(0)

相关推荐

  • ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)

    当用户要输入一些密码.信用卡信息和银行账号等敏感信息,用户更希望手工通过键盘敲入数据,而好过通过剪贴板复制粘贴. 我们先来看下实现后的效果: 输入新密码 复制新密码出现如下对话框 界面代码 复制代码 代码如下: <body> <form id="form1" runat="server"> <div align="center"> <fieldset style="width: 400px; h

  • 在ASP.NET 2.0中操作数据之十四:使用FormView 的模板

    导言 在上两节教程中,我们看到了如何使用TemplateField来自定义GridView和DetailsView的输入.TemplateField使我们可以高度自主的定义某个特定的列,但不管是GridView还是DetailsView,都会有点太规则了,简单的说就是它们都有着四四方方的格子一样的外观.很多情况下这样的格子一样的外观是很不错的,不过有的时候我们却需要使用一个不规则的显示外观.当需要显示一个单独的记录时,使用FormView控件就可以实现这种比较随意的外观呈现. 跟DetailsV

  • 详解ASP.NET页面生命周期事件

    下面是ASP.NET页面初始的过程:1. Page_Init();2. Load ViewState;3. Load Postback data;4. Page_Load();5. Handle control events;6. Page_PreRender();7. Page_Render();8. Unload event;9. Dispose method called; 下面对其中的一些过程作下描述:1. Page_Init();这个过程主要是初始化控件,每次页面载入执行这个初始过程,

  • 在ASP.NET 2.0中操作数据之十六:概述插入、更新和删除数据

    导言 结束前面的几节,我们已经探讨过了如何使用GridView.DetailsView和FormView控件来显示数据.这些控件简单地操作提供给它的数据.一般地,这些控件通过使用一个数据源控件,例如ObjectDataSource来存取数据.我们已经看过了ObjectDataSource是如何在ASP.NET页面和潜在的数据之间扮演一个代理的角色.当一个GridView需要显示数据时,它调用ObjectDataSource的Select()方法,这个方法转而调用一个来自我们的业务逻辑层(BLL)

  • 在ASP.NET 2.0中操作数据之十三:在DetailsView控件中使用TemplateField

    导言 比起BoundField.CheckBoxField.HyperLinkField以及其他的那些数据字段控件(data field controls)来说,TemplateField提供了一种高度复杂的数据呈现的方法.在上一节中,我们主要着重于在GridVIew中使用TemplateField,以实现: ·在一列中显示多个数据字段.比如说,将FirstName和LastName字段合并起来显示在一个GridView列中. ·使用交互Web控件来展示数据.我们看到了如何使用一个Calenda

  • Asp.net TextBox的TextChanged事件使用介绍

    在博客园里有位兄弟问了我一个问题,动态创建的控件是如何加载视图状态,还提到ProcessPostData方法的调用.这里我就用TextBox的TextChanged事件来说说视图数据的加载以及事件的触发. 我们首先还是来看一个demo吧: 代码如下: 运行结果如图: 现在我们来修改文本框的值,然后点击按钮提交页面,看看有什么事情发生 TextBox的TextChanged事件这时候发生了,运行结果如图: 现在我们什么也不做,再次点击按钮提交,看看会有什么效果: 这是为什么了,TextBox的Te

  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    导言 GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中.最简单的字段类型是BoundField,它仅将数据简单的显示为文本.其他的字段类型使用交互HTML元素(alternate HTML elements)来显示数据.比如说,CheckBoxField将被呈现为一个CheckBox,其选中状态由某特定数据字段的值来决定:ImageField则将某特定数据字段呈现为一个图片,当然,这个数据字段中应该放的是图片类型的数据.

  • 在ASP.NET 2.0中操作数据之十五:在GridView的页脚中显示统计信息

    导言 除了需要了解产品的单价.库存量和订货量,并按等级排序之外,用户可能还对统计信息感兴趣,比如说平均价格.库存总量等等.这些统计信息常常显示在报表最下面的一个统计行中.GridView控件可以含有一个页脚行,我们可以通过编程将统计数据插入到它的单元格里面去.这个任务给了我们以下3个挑战: 1.配置GridView以显示它的页脚行 2.确定统计数据.即我们应该如何计算平均价格还有库存总量? 3.将统计信息插入到页脚行的相应的单元格中 在本节教程中,我们将会看到如何去征服这些挑战.另外呢,我们将创

  • 在ASP.NET 2.0中操作数据之十七:研究插入、更新和删除的关联事件

    导言 当使用GridView.DetailsView或FormView控件的内建插入.编辑或删除特征时,在用户添加一条新记录或更新/删除一条现在记录的过程中发生了多个步骤.正如我们之前一节里所讨论的,在GridView中编辑一行时,保存(Update)和取消(Cancel)按钮将取代编辑(Edit)按钮,并且绑定列转换成TextBox.在用户更新了数据并点击保存按钮之后,下述步骤在回传时执行: 1.该GridView控件根据当前编辑行的唯一标识字段(通过DataKeyNames属性)组装它的Ob

  • Asp.Net 不同的OnClick事件区别小结(onserverclick,onclientclick)

    1. HTML控件,如IMG的输入按钮等 的 onclick ( 客户端 )和 onserverclick( 服务端 )事件,注意 runat="server"... 此处的onclick先于onserverclick执行.2.WEB控件,如<asp:button 按钮等 的 onclientclick( 客户端 ) 和 onclick ( 服务端 )事件... 此处的onclientclick先于onclick执行.onclientclick  事件来自2.0, 它用来取代下列

  • js触发asp.net的Button的Onclick事件应用

    在asp.net引入事件驱动之后,在一个页面上很容易解决多个按钮触发不同事件的问题,避免了在asp中需要多个form或者通过js脚本来控制的麻烦. asp.net带来便利的同时,也带来一个问题.在实际应用中一个页面存在多个按钮的情况并不多.用户习惯于在输入框输入内容之后,直接按回车就提交表单了.由于asp.net采用的是事件驱动模式,所以默认用户按回车并没有触发按钮的onclick事件.用户按回车也不是没有提交表单,通过httpwath可以看到,实际上页面表单是提交到了form下的action页

随机推荐