如何使用ViewState存储记录

时间:2012-04-21 09:02:27

标签: c# asp.net viewstate

现在有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”。 我该如何编码来解决它?

1 个答案:

答案 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();
    }
}