zoukankan      html  css  js  c++  java
  • ASP.NET页面事件执行顺序

    using System;

      using System.Data;

      using System.Configuration;

      using System.Web;

      using System.Web.Security;

      using System.Web.UI;

      using System.Web.UI.WebControls;

      using System.Web.UI.WebControls.WebParts;

      using System.Web.UI.HtmlControls;

      public partial class _Default : Page

      {

      protected void Page_Load(object sender, EventArgs e)

      {

      }

      #region OnPreInit 第一步

      protected override void OnPreInit(EventArgs e)

      {

      //检验 IsPostBack 属性来确定是不是第一次处理该页。

      //建立或重新建立动态控件。

      //动态配置主控页。

      //动态配置 Theme 属性。

      //读取或配置配置文件属性值。

      //留心

      //假如请求是回发请求,则控件的值尚未从视图状态还原。假如在此阶段配置控件属性,则其值可能会在下一事件中被重写。

      base.OnPreInit(e);

      }

      #endregion

      #region OnInit 第二步

      protected override void OnInit(EventArgs e)

      {

      //在所有控件都已原始化且已使用所有外观配置后引发。运用该事件来读取或原始化控件属性。

      base.OnInit(e);

      }

      #endregion

      #region OnInitComplete 第三步

      protected override void OnInitComplete(EventArgs e)

      {

      //由 Page 对象引发。运用该事件来处理要求先完成所有原始化工作的任务。

      base.OnInitComplete(e);

      }

      #endregion

     #region PreLoad 第四步

      protected override void OnPreLoad(EventArgs e)

      {

      //假如须要在 Load 事件之前对页或控件执行处理,请运用该事件。

      //在 Page 引发该事件后,它会为自身和所有控件加载视图状态,然后会处理 Request 实例包含的任何回发数据。

      base.OnPreLoad(e);

      }

      #endregion

      #region OnLoad 第五步

      protected override void OnLoad(EventArgs e)

    {

      //Page 在 Page 上调用 OnLoad 事件要领,然后以递归形式对每个子控件执行相似操作,如此循环往复,直到加载完本页和所有控件为止。

      //运用 OnLoad 事件要领来配置控件中的属性并建立数据库连接。

      base.OnLoad(e);

      }

      #endregion

      #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 服务器控件。{

      //Page 在 Page 上调用 OnLoad 事件要领,然后以递归形式对每个子控件执行相似操作,如此循环往复,直到加载完本页和所有控件为止。

      //运用 OnLoad 事件要领来配置控件中的属性并建立数据库连接。

      base.OnLoad(e);

      }

      #endregion

      #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

  • 相关阅读:
    windows系统切换jdk,修改java_home无效情况
    Cannot instantiate interface org.springframework.context.ApplicationListener
    MySQL分组查询获取每个学生前n条分数记录(分组查询前n条记录)
    ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
    EF TO MYSQL 无法查询中文的解决方法
    HttpWebRequest post请求获取webservice void数据信息
    This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案
    MySQL 5.7.13解压版安装记录 mysql无法启动教程
    C# udpclient 发送数据断网后自动连接的方法
    汽车XX网站秒杀抢购代码
  • 原文地址:https://www.cnblogs.com/xuanqust/p/1737494.html
Copyright © 2011-2022 走看看