我用session记录的值, 当第一次加载的时候 我点击的是BUTTON1,加载了两个文本框 我输入内容,然后再点击BUTTON2 这是由于我用session记录了值 这个时候 两个文本框的值不变。 怪就怪在,当我在点击BUTTON1是 又重新加载了那两个文本控件 我再输入内容 然后再点击BUTTON1时 文本框的内容就没了 在写入再点击BUTTON1时又有了 这个问什么啊? 谁知道怎么解决 。
代码在下面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
//在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["AAA"] = null;
}
if (Session["AAA"] != null)
{
PlaceHolder1.Controls.Add((Control)Session["AAA"]);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Control a = base.LoadControl("WebUserControl.ascx");
Session["AAA"] = a;
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(a);
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
}
动态加载需要在OnInit的时候,重新创建这两个TextBox Instance,记得Id要对上。看看页面生命周期的文章。如果觉得较麻烦,我建议可以用GridView、ListView之类的会自动创建子项的Control来生成TextBox。这样就不用自己在OnInit的时候创建Textbox的instance了。
好像动态加载的控件状态是不会被保存的.