现在有2个按钮,我们分别称它们为“Button1”和“Button2”。 如果单击“Button1”,则在ViewState [“Record”]中存储“1”;另外,如果我点击“Button2”, 在ViewState [“Record”]等中存储“2”
当我点击Button1⟶Button1⟶Button2⟶Button2时,我的预期结果是:在ViewState [“Record”]中,有一个记录列表,比如
[1,1,2,2].
这是我的点击事件代码:
protected void Button1_Click(object sender, EventArgs e)
{
ViewState.Add("Record", "1");
}
protected void Button2_Click(object sender, EventArgs e)
{
ViewState.Add("Record", "2");
}
//show the viewstate result
protected void ShowResult(object sender, EventArgs e)
{
for (int i = 1; i <= 4; i++)
{
Label.Text += ViewState["Record"];
}
}
显示“2222”而不是“1122”。 我该如何编码来解决它?
答案 0 :(得分:2)
当你添加一个实际上没有添加的Record键时,只需输入一个值Record键。你总是在循环中看到最后一个附加价值。
您应该向ViewState添加一个List并将值添加到列表中。
添加此属性
protected List<long> ViewStateList
{
get{ if(ViewState["Record"] == null) ViewState["Record"] = new List<long>();
return (List<long>)ViewState["Record"] }
}
并使用
protected void Button1_Click(object sender, EventArgs e)
{
ViewStateList.Add(1);
}
循环
protected void ShowResult(object sender, EventArgs e)
{
foreach(long item in ViewStateList)
{
Label.Text += item.ToString();
}
}