0

现在有 2 个按钮,我们分别称它们为“Button1”和“Button2”。如果我单击“Button1”,将“1”存储在 ViewState["Record"] 中;另外,如果我单击“Button2”,将“2”存储在 ViewState[“Record”] 等中。

当我点击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”。我该如何编码来解决它?

4

1 回答 1

2

当您添加 Record 键时,它实际上不会添加一个值,只需放置一个值 Record 键。您总是会在循环中看到最后的附加值。

您应该向 ViewState 添加一个列表并向列表添加值。

添加此属性

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();
    }
}
于 2012-04-21T09:11:37.223 回答