让人糊涂的TrackViewState()与视图状态保存,在下实在不解~
使用了TrackViewState()来保存视图状态以下的代码一到三执行得到的结果都相同:
代码一:
protected void Page_Load(object sender, EventArgs e)
{
ListBox lb = new ListBox();
(lb.Items as IStateManager).TrackViewState();
if (!Page.IsPostBack)
{
lb.Items.Add("子项1");
lb.Items.Add("子项2");
lb.Items.Add("子项3");
lb.Items.Add("子项4");
lb.Items.Add("子项5");
}
this.form1.Controls.Add(lb);
}
代码二:
protected void Page_Load(object sender, EventArgs e)
{
ListBox lb = new ListBox();
(lb.Items as IStateManager).TrackViewState();
lb.Items.Add("子项1");
lb.Items.Add("子项2");
lb.Items.Add("子项3");
lb.Items.Add("子项4");
lb.Items.Add("子项5");
this.form1.Controls.Add(lb);
}
代码三:
protected void Page_Load(object sender, EventArgs e)
{
ListBox lb = new ListBox();
(lb.Items as IStateManager).TrackViewState();
if (!Page.IsPostBack)
{
lb.Items.Add("子项1");
lb.Items.Add("子项2");
lb.Items.Add("子项3");
lb.Items.Add("子项4");
lb.Items.Add("子项5");
}
else
{
lb.Items.Add("子项6");
}
this.form1.Controls.Add(lb);
}
疑惑:当页面进行回发后
为什么代码二的结果ListBox 没有重复添加“子项1”“子项2”“子项3”“子项4”“子项5”?
为什么代码三得结果ListBox 没有“子项6”呢? --------------------编程问答-------------------- up --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- 因为你每次都重新创建了一个实例 --------------------编程问答-------------------- 你说的问题和这个一样。
如何保存动态控件中的数据状态
补充:.NET技术 , ASP.NET