先上例子protected void Page_Load(object sender, EventArgs e)
 {
        TextBox text = new TextBox();
        text.ID = "Text1";
        text.Text = "TextBox1";
        this.form1.Controls.Add(text);
        string nowText = text.Text;//无论怎么修改客户端值,这里值永远是TextBox1,视图状态永远没有回填
 }
 
protected void Page_Load(object sender, EventArgs e)
 {
        TextBox text = new TextBox();
        text.ID = "Text1";
        text.Text = "TextBox1";
        text.TextChanged += (obj, send) =>
         {
             string str = (obj as TextBox).Text;
         };
        this.form1.Controls.Add(text);
        string nowText = text.Text;//,这里当用户该了客户端值时,显示上一次的视图状态
 }上面的例子主要考的是视图状态的恢复问题,该问题又分解出以下几个小点(下面说的状态包括控件状态和视图状态)1、通常来说如果直接拖动控件到页面上,该控件会在页面生命周期开始前通过调用一个_BuildControlTree来添加到控件树中,然后待后来的LoadAllState来恢复其上一次的最终状态,那么请问我在Page_Load中创建的状态是何时恢复的?2、如果你说Page_Load中创建的控件,会在第二次的ProcessPostData中处理回传的,这大家都知道,可是我问的是恢复上一次状态是什么时候,而不是回传值。3、如果说Page_Load中创建的控件是在调用Controls.Add时做的,也确实,因为里面有一个判断是这样写的this._controlState >= ControlState.ViewStateLoaded,如果父节点的状态已经标识是加载了视图状态,那么会再次回填视图状态,很显然在第一次_BuildControlTree的Add中,状态还只是Constructed,所以不会处理回填需要等后来的LoadAllState来处理4、如果说确实this._controlState >= ControlState.ViewStateLoaded来判断是否要添加的时候就恢复视图状态,那么请问最上面的例子要怎么解释,怎么还跟是否有回调方法关联。5、如果你解释了上面所有原因,且正确,那么此贴为水贴,你一笑而过,不过你帮助了一个正被该问题困扰的同学,呵呵