_Control = this.LoadControl("~/FunctionUserControls/LogonUserControl.ascx");
            this.PlaceHolder1.Controls.Add(_Control);
每次都要加的

解决方案 »

  1.   

    _Control = this.LoadControl("~/FunctionUserControls/LogonUserControl.ascx");
    _Control.ID="test";
    this.PlaceHolder1.Controls.Add(_Control);
      

  2.   

    楼上说的加上ID 。我明白这个 Bug .
    但是照样不管用 。 
    看来一定不能用!IsPostback判断了 。
      

  3.   

    LZ 可以从传入的地方加一个参数判断..
      再根据传入的参数不同.. 而判断是否IsPostBack
      

  4.   

    那也太不好了 吧 。
    去掉等于每次都创建新的 。
    我以前修改的属性都没有保存了。
    ——————————————————————————————————————
    首先并不是没有保存这么简单的逻辑。你在设计器上写死的那些控件,并不是不需要创建,页面每一次都创建它们,只不过它是在Init事件之前实际上是在页面实例创建的时候就创建好了,因为你写死的东西是自动翻译成代码并预编译到dll里的。它也是每一次创建新的。asp.net根本并不给你保存控件,相反,你如果创建了动态控件那么在page_load后会自动填入属性。如果你不创建控件,那么对不起,属性扔掉了。
      

  5.   

    去掉if (!IsPostBack)没有问题的
      

  6.   

    是的,每一次提交,整个页面(Page类)包括上面的所有控件都要重新创建实例的
      

  7.   

    你写死的东西是自动翻译成代码并预编译到dll里的,不要以为有内存中的什么对象库跨页面保存它们。没有的。它也是每一次创建页面的时候由自动产生的代码部分首先创建控件(属性为初始化值),然后执行init事件,之后填入属性,然后才执行page_load。你在page_load中再动态创建的控件,在page_load结束后会立刻填入属性。你在CreateChildControls方法中动态创建的控件,则基本上是在Init事件结束后创建并与那些在设计时写死的控件同时被填入属性的。你可以搜索一些关于页面状态处理机制的详细介绍文章。