• ASP.net中页面事件的先后执行顺序(转)


    master页面,用户控件的执行顺序,
    前提是有一个页面A,引用master页面B,在两个页里中都分别引用用户控件,
    用户控件A在页面A中,用户控件B在master页面B中下面我记录下来他们的执行顺序
    请注意:
    首先执行页面A的Load事件
    接下来运行master页面B的Load事件
    然后运行在master页面B中用户控件B的Load事件
    最后运行页面A中用户控件A的Load事件
    这是我在调试的时候发现的,希望可以给同样是ASP.NET开发人员一些帮助.
    客户发出POST请求-〉创建Page派生类,调用构造函数-〉调用Page类的IHttpHandler.ProcessRequest方法-〉激活Page类的Init事件-〉调用Page类的CreateChildControls虚方法-〉从POST变量和VIEWSTATE中还原服务器端控件状态-〉激活Page类的Load事件-〉激活服务器端控件事件-〉激活Page类的PreRender事件-〉调用Page类的Render虚方法-〉调用Page类的RenderChildren虚方法-〉发送HTTP响应给客户端-〉激活Page类的Unload事件-〉丢弃Page派生类的实例。

    Page 执行中将按照如下顺序激活事件:
    Page.PreInit
    Page.Init
    Page.InitComplite
    Page.PreLoad
    Page.Load
    Page.LoadComplete
    Page.PreRender
    Page.PreRenderComplete
      如果页面从令一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是:
    UI.PreInit
    Page.PreInit
    UI.Init
    Page.Init
    UI.InitComplite
    Page.InitComplite
    UI.PreLoad
    Page.PreLoad
    UI.Load
    Page.Load
    UI.LoadComplete
    Page.LoadComplete
    UI.PreRender
    Page.PreRender
    UI.PreRenderComplete
    Page.PreRenderComplete

      如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活:
    ContentPage.PreInit
    Master.Init
    ContentPage.Init
    ContentPage.InitComplite
    ContentPage.PreLoad
    ContentPage.Load
    Master.Load
    ContentPage.LoadComplete
    ContentPage.PreRender
    Master.PreRender
    ContentPage.PreRenderComplete

      更进一步,如果ContentPage继承BasePage,那么,各事件的执行顺序将变成:
    UI.PreInit
    ContentPage.PreInit
    Master.Init
    UI.Init
    ContentPage.Init
    UI.InitComplite
    ContentPage.InitComplite
    UI.PreLoad
    ContentPage.PreLoad
    UI.Load
    ContentPage.Load
    Master.Load
    UI.LoadComplete
    ContentPage.LoadComplete
    UI.PreRender
    ContentPage.PreRender
    Master.PreRender
    UI.PreRenderComplete
    ContentPage.PreRenderComplete

    Kyle

  • 相关阅读:
    读书笔记 之《Thinking in Java》(对象、集合、异常)
    ArrayList 和 LinkedList的执行效率比较
    Hybris CronJob.
    C# 中的treeview绑定数据库(递归算法)
    identity_insert---实验性插入大批量数据和分页存储过程
    SQL Server 存储过程
    PL/SQL 在64位机上不能使用的问题解决
    登陆Oracle11g的企业管理器
    SQL在oracle和SQLserver将查询结果创建为新表的不同之处
    介绍一下内联、左联、右联
  • 原文地址:https://www.cnblogs.com/lovewife/p/1428814.html
Copyright © 2020-2023  润新知