实现ITemplate接口
实现 InstantiateIn() 方法
为什么会执行2次。
每次代表什么?

解决方案 »

  1.   

    在 IsPostback 成立的时候,大部分你的程序要修改的动态特性都会执行两次。第一次是在Page装载完成子控件之前。只有恢复了上一次页面输出时的控件树,只有恢复了控件树的完整结构,才能把控件的状态填回去,并且之后才能填写用户提交的信息到控件(从而在页面装载完成之后触发xxxx_Changed这类事件)。创建控件的子控件会调用InstantiateIn。第二次事发生在你动态修改目标控件的时候,例如你重新绑定控件,这时子控件被删除,控件重建子控件,调用了InstantiateIn。
      

  2.   

    web是不保存状态的。asp.net延续了web服务的轻量级特性,在处理page完成之后瞬间就释放了对象。但是asp.net又要给开发人员一个传统winForm差不多的编程框架,似乎控件都是驻留在内存中似地完善。于是,就有了上述过程。