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"];
    }
}

「1122」ではなく「2222」と表示されます。それを解決するためにどのようにコーディングできますか?

4

1 に答える 1

2

レコードキーを追加すると、実際には追加されない値が追加され、値レコードキーが追加されます。ループには常に最後の付加価値が表示されます。

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 に答える