zoukankan      html  css  js  c++  java
  • 理解page类

    服务器端的page对象
    所有我们编写的页面都继承自page对象,可见page对象是非常重要的,page对象提供了哪些功能,直接决定了我们的页面类可以继承什么功能,或者说,直接决定了我们的页面类功能的强大与否!那么,page对象实现了什么功能呢?如前所述的三个客户端的事实,页面类要管理ViewState,还要管理事件。page对象起码要提供这些功能以供我们的页面类重载或者调用。

    page对象提供了四个顺序执行的事件Init,Load,PreRender和Unload,这四个事件是一条主线,依次标明了page对象执行的各个阶段。init事件发生在所有服务器端控件的状态(ViewState)被存储之前。load事件发生在所有服务器端控件的状态被存储之后和所有的事件被触发之前。PreRender事件发生在所有事件被触发之后和要回发给客户端的html还没有回发(这个过程也叫"呈现")之前。unload事件发生在所有html都回发完成以后。从这四个事件可以看到page对象的大致执行步骤。

    详细的page对象事件顺序是这样的:获得客户端的post请求-〉page对象的继承类被构造-〉page对象的ProcessRequest方法被调用->init事件被执行->page对象的虚函数CreateChildControls被调用->服务器端控件的状态(来自post变量和ViewState)被存储->load事件被执行->我们自定义的服务器端控件的事件被执行->PreRender事件被执行->page对象的虚函数Render方法被调用->page对象的虚函数RenderChildren方法被调用->Http响应发往客户端->unload事件被执行->page对象的继承类被解构。我们知道一个页面上的控件很多是包含(父子)关系,所以这里的CreateChildControls和RenderChinldren函数应该就不难理解了。

    这个事件顺序是理解asp.net页面类的关键,和前面客户端的三个事实结合起来理解,就可以解释asp.net怎么样把客户端和服务器端结合起来,从而实现从脚本编程转移到面向对象编程。无论是微软提供的webcontrols,或者是用户自定义控件,涉及到客户端和服务器端交互,原理都与此类似。

  • 相关阅读:
    Django models 中导入重复数据的解决办法
    Python3 re
    Django 从请求到相应的过程
    Django session global配置
    CountDownLatch和CyclicBarrier用法及区别讲解
    npm
    go 实现爬虫
    go,redis实现订阅和发布
    使用Network Emulator Toolkit工具模拟网络丢包测试
    vue+element 使用多个el-select绑定的值为同一个值
  • 原文地址:https://www.cnblogs.com/further/p/15793.html
Copyright © 2011-2022 走看看