protected void Page_Load(object sender, EventArgs e)
{    if (this.LatestLoadedControlName != "")
        this.LoadUserControl(LatestLoadedControlName, Panel2);}上面的代码错了.请在page_init事件中调用.
protected void Page_Init(object sender, EventArgs e)
{        this.LoadUserControl(LatestLoadedControlName, Panel2);}

解决方案 »

  1.   

    先看看我在微软里论坛提出的问题.
    http://social.microsoft.com/Forums/zh-CN/295/thread/11db63ed-9336-4a6c-9181-2234444d16eb
    里面给的解决方法,我嫌弃太麻烦也没有去尝试.关键就是:我觉得问题应该出在运行时,控件生成先后顺序问题上。
    于是我把动态生成控件的代码"提前"到:OnInit 里,问题解决了。所以,个人更加感觉通常动态生成的控件不能保存住状态,就是因为:在运行时上,控件是在OnInit 之后才生成的,当然不会像一般server控件一样能保持ViewState了。不过搂主不明白我的意思,可以先了解一下asp.net模型控件/页面的整个生存周期。至于:孟宪会的方法:重写LoadViewState和SaveViewState方法,或者自己使用ViewState进行控制
    我觉得应该也是可以实现的,确实我也是测试过自定义ViewState控制方法的。比如说:把ViewState放到server硬盘上。通过牺牲server的IO来换取client更小的html下载量。