2011-12-07 11 views
0

私のリスト<を永続化するgetとsetをしようとしています。私は自分の意図が明確であると思います。私はリストがポストバック全体に残るようにしたいので、その中のデータは捨てないでください。List <>

私は間違っていますか?私のAlertPopUpのおかげで、私はGetがトリガーされていることがわかりますが、決してSetです。したがって、Listはいくつかの項目を持つ必要があるときにcontainsintとしてゼロに戻ってきます。

private List<string> accountIDsSelectedForDeletion = new List<string>(); 
public List<string> AccountIDsSelectedForDeletion 
{ 
    get { 
     if (ViewState["AccountIDsSelectedForDeletion"]!= null) 
     { 
      accountIDsSelectedForDeletion = ViewState["AccountIDsSelectedForDeletion"] as List<string>; 
      AlertPopUp.QuickDebugMessage("getting list from viewstate. Count: "+ accountIDsSelectedForDeletion.Count);    
     } 
     AlertPopUp.QuickDebugMessage("returning list"); 
     return accountIDsSelectedForDeletion; 

    } 
    set { 
     AlertPopUp.QuickDebugMessage("setting list to viewstate. Count: " + accountIDsSelectedForDeletion.Count); 
     accountIDsSelectedForDeletion = value; 

     ViewState["AccountIDsSelectedForDeletion"] = accountIDsSelectedForDeletion; 
    } 
+0

Add()メソッドでListを変更することができますか? – Lautaro

+0

このリストに項目を追加する時期と方法は? –

+0

getterでダブルルックアップを実行します。 'var list = ViewState [" "]をリストとして使用する; if(list!= null) 'です。 – abatishchev

答えて

0

私はその追加()メソッドでリストを変更するので、それがだろうか?

一言で言えば、はい。 .Add()はリストを突然変異させていますが、Setプロパティはリストにセットピースとして作用します。

あなたがここで何をしようとしているかを達成するために、私はAddRemove(ext、there there more)メソッドにコードを注入できるように、Listから継承型を作成します。同様に:

//not syntatically correct sorry 
public class MyList : List<string> 
{ 
    public override Add(string NewItem) 
    { 
     //do a extra peristance step here 
     // 
     me.Add(NewItem); 
    } 
} 

またはプライベートリスト<をラップするクラスを持っている>と、おそらく同じように、メソッドを追加/削除管理:

public class MyList 
{ 
    private List<string> listItems { get; set; } 
    //don't expose the list in a mutable state, IEnumerable instead 
    public IEnumerable<string> Items { get { return this.listItems; } } 

    public void Add(string NewItem) 
    { 
     this.ListItems.Add(NewItem); 
    } 
} 

をそれからちょうどあなたのページレベルのクラスでこのタイプのリストを置き換えます。

ちなみに、ViewStateに続けると、1ページのワイヤのワイヤを上下に送る必要がある情報の量が膨大になります。 Session、またはCacheオブジェクトを考えましたか?

関連する問題