• 关于Page带母版页等加载的顺序那些事


    WebForm的一堆事件挺让人头疼,常常搞混这些事件的顺序。如何在适当的事件阶段设置一些属性或执行某种操作,所以归纳下:

    原文:

    http://www.betterbuilt.com/testload.aspx

    图:

    咋一看可能有点晕乎(作者把用户控件,母版页这些都弄上了),一堆处理阶段,我分了下组,主要有以下大的阶段:

    1.初始化阶段Init

    2.加载阶段Load

    3。预渲染阶段PreRender

    而对于Page来说,在每个阶段开始前和结束后对应有Pre*这样的预阶段和*Complete的完成阶段。

    如上有细分(1.Page PreInit预初始化 2.Page Init 初始化 3.Page InitComplete初始化完成 4.Page PreLoad 预加载 5.Page Load加载 6.Page LoadComplete加载完成

    7.Page PreRender 预渲染 8.Page PreRenderComplete预渲染完成 )

    当然了,对于三大阶段不是一下子就搞定的,需要还得照顾孩子。

    整体上来说,访问AAA.aspx这个页面,

    A.显示Page要初始化了PreInit

    B。接着自上而下的开始,对于Init,由内而外的,所以先是子控件的Init,才是福控件的Init。

    发现了Master,要对Master Init,不过母板有子控件嘛,所以还是自上而下,碰到了Button Before这个按钮,所以对它Init.

    再往下是一个Content PlaceHolder内容占位啦,对内容页也是从上倒下,由内而外的Init:

    先碰到Page Content Button Init,然后后面有个嵌套的控件,对它由内而外(当然孩子多个的话也是有上而下)。内容页搞定后:

    还是回到Master页来看,后面有个用户控件,还是那一套...

    最后Master Init...

    Page Init...

    Page Init Complete...完成。

    记住一句话:从上到下,由内而外(Init).

    C.要Load和PreRender了,这个和B类似,不过注意顺序

    从上到下,但是由外而内(恰恰这个深层的是相反的)

    就是说先处理父控件在处理子控件。

    所以对于Load来说是:

    Page Load->Master Load->Master 第一个控件 Load->...(碰到深层度的由外而内)....

    归纳:

    Init事件(从上而下,由里而外)

    Load和PreRender事件(从上到下,由外而内)。

    仅作总结,如有错误望指正。

  • 相关阅读:
    [转]在efcore 中创建类 通过实现IEntityTypeConfiguration<T>接口 实现实体类的伙伴类 实现FluentApi
    jboss反序列化漏洞(CVE-2017-12149)
    第一阶段 3、javascript
    vue创建新项目
    vue引入git项目运行测试相关
    javascript基础知识梳理
    关于模式识别作业——利用分类器实现手写数字识别
    Guava 学习
    读书清单
    @JsonInclude(Include.NON_NULL)全局配置
  • 原文地址:https://www.cnblogs.com/xcf007/p/2809911.html
Copyright © 2020-2023  润新知