这个问题有点诡异,先上代码:protected void Page_Load(object sender, EventArgs e)
{
tb = new TextBox();
Panel1.Controls.Add(tb);

tb.Text = "2";
tb.BackColor = System.Drawing.Color.Red;

if (!this.IsPostBack)
{
tb.Text = "1";
tb.BackColor = System.Drawing.Color.Blue;
}
}照理说,在执行完Panel1.Controls.Add(tb);后,tb应该立即经过初始化,加载视图,加载回发数据阶段,但根据运行结果,视图状态是被加载了(文本框的背景色),而回发数据未加载,即一开始赋值的“1”。这个加载过程ms在Page_Load阶段之后再加载的,因此覆盖掉了tb.Text="2"这个值。通过下面的语句可以发现:void _Default_LoadComplete(object sender, EventArgs e)
{
Response.Write(tb.Text);
}
页面加载完成后,tb的text属性被回传数据“1”所覆盖。
但如果tb控件是在OnInit方法中动态添加的页面中,则没有这个问题。
上面是Asp.net2.0中的代码,1.1中这个问题同样存在。不知道我有没有描述清楚问题,希望达人能够解释一下,谢谢!