2011-09-08 14 views
8

で一覧 を保存: は、私は次のことを持っているaspxページを持っているビューステート

  • リンクボタンが整数値
  • ユーザーのcommandargumentを持つ各
  • にLinkBut​​tonコントロールとリピータコントロール

考えられるのは、ユーザーがリンクボタンをクリックしたときに、コマンド課金の値がリストに格納されることです。あなたが思うかもしれない問題はありませんが、ASPXページではなくusercontrolのリストに値を格納する必要があります。リストは、ポストバック間で永続化する必要があるため、ビューステートにも格納する必要があります。

だから私はそうのようなユーザーコントロールのパブリックプロパティを作成:

public List<int> ImageString { 
    get { 
     if (this.ViewState["ImageString"] != null) { 
      return (List<int>)(this.ViewState["ImageString"]); 
     } 
     return new List<int>(); 
    } 
    set { this.ViewState["ImageString"] = value; } 
} 

そして、私は私のaspxページから、私はそうのようなリストに値を追加するコードの行を追加することができますことを期待していたが:

this.LightBoxControl.ImageString.Add(value); 

私は取得しています問題は、値が実際にリストに追加されることはありませんということです。カウントは常にゼロです。

私は私が間違ってプロパティを設定したそのわずかことを確信しているが、私は右のそれをするかどうかはわかりません。..

任意の助けいただければ幸いです。

おかげ アル

答えて

17

あなたのゲッターは間違っています。ここで

get { 
    if (this.ViewState["ImageString"] == null) { 
     this.ViewState["ImageString"] = new List<int>(); 
    } 
    return (List<int>)(this.ViewState["ImageString"]); 
} 

あなたが最初にあなたがすでにViewStateに必要なものがあるかどうかをチェックし、何がある場合、あなたはそこにそれを追加していない:これは正しいバリアントです。その後、ViewStateからアイテムを返します。それはそこにあることが保証されています。

あなたの解決策は、ViewStateのにnew List<int>()を置いていなかったので、悪かった

+0

絶対に完璧な - あなたは時々木のために木を参照してくださいカントどのように素晴らしいです!ご協力いただきありがとうございます。 – higgsy

関連する問題