• 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
  • 相关阅读:
    Scrum为什么不喜欢“来自客户的频繁变更”?
    [转]SQL Server计算列
    宽容,是创新的土壤
    【转载】《2010年年度总结》
    远程维护需要“千里眼”
    TOP语句放到表值函数外,效率异常低下
    “设计应对变化”实例讲解一个数据同步系统
    “批量少次”还是“少量多次”邮件通信系统效率浅谈
    NYOJ117 求逆序数
    NYOJ92 图像有用区域
  • 原文地址:https://www.cnblogs.com/rodney/p/900988.html
Copyright © 2020-2023  润新知