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不会执行覆盖操作了,每次点击按钮,次数都会加一。

  • 相关阅读:
    IP的幻觉
    糟糕的一天
    windows下批量生成文件
    基于Bandersnatch搭建本地pypi源
    vmware vsphere 无法启动故障;
    关于Centos7客户端代理配置
    怎样在交换机判断是否出现环路了呢?
    小小的网络故障
    express for LINUX
    ESXI 7.0 ovf 导出;
  • 原文地址:https://www.cnblogs.com/wanglg/p/3573933.html
Copyright © 2011-2022 走看看