zoukankan      html  css  js  c++  java
  • Page_Init 的执行过程

    网上有的资料在说Page_Init这个事件只会在第一次加载页面时触发,实际上并不是这样,我们会发现每次回发页面,Page_Init事件都会被执行,

    举一个例子

     private static int times = 0;        

    protected  void Page_Init(object sender, EventArgs e)        

    {            

      base.OnInit(e);            

      times++;  //1

        this.Label5.Text = times.ToString();

    },再添加一个button,用来做

    我们会发现,事实上这个函数还是执行了,但是在这个函数中对控件的修改无效,页面上一直都是1。

    我们一起来看一下执行过程,

    第一次加载Page_Init事件,页面上的控件都还“没有加载好”,或者说也都在初始化阶段,给控件赋值,展示到页面中。在这个过程中的LoadViewState事件

    没有执行,因为这个事件在页面回发时才执行时才执行。再点击Button按钮,这时候页面回发,Page_Init事件被触发,次数也加1,但是再往下Text属性赋值会被后期的ViewState恢复等操作覆盖掉。

    所以我们会看到Text的值保持不变,除非在PageLoad事件中赋值。

    如果我们设置EnableViewState="false",就会发现ViewState不会执行覆盖操作了,每次点击按钮,次数都会加一。

  • 相关阅读:
    Redis系列一
    浅谈Java开发三层架构
    plsql乱码问题
    eclipse工作空间的常用设置
    《经典面试系列》- 索引
    《数据库优化》- 存储过程
    遍历Map的四种方式(Java)
    调用微信js sdk
    根据多个成对的cron表达式生成的时间段,合并
    关于Map集合注意事项
  • 原文地址:https://www.cnblogs.com/wanglg/p/3573933.html
Copyright © 2011-2022 走看看