2011-09-08 15 views
8

bir Listesini saklanması aşağıdaki olan bir aspx sayfası var kontrol Buradaki fikir şudur: Kullanıcı link butonunu tıkladığında, komutatörün değeri bir Listede saklanır. Düşündüğünüz bir sorun yok, ancak ASPX sayfasında değil usercontrol içindeki bir Listede saklanacak değere ihtiyacım var. Listenin geri gönderimler boyunca kalıcı olması gerekir, bu nedenle de görünüm aşamasında saklanması gerekir. viewstate

Yani şöyle kullanıcı kontrolünde kamu malına yarattı:

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

Sonra benim aspx sayfasından ben şöyle listesine bir değer katmak için bir kod satırı ekleyin umuyordum :

this.LightBoxControl.ImageString.Add(value); 

Sorun şu ki, bu değer aslında hiçbir zaman listeye eklenmemiş. Sayı her zaman sıfırdır.

eminim onun yanlış özelliğini kurdum ama

Herhangi bir yardım

büyük takdir .. bunu düzeltmek nasıl emin değilim sadece.

Teşekkür Al

cevap

17

Sizin alıcı yanlıştır. İşte

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

öncelikle zaten ViewState içinde gereken bir şey olup olmadığını kontrol edin ve hayır varsa, orada ekleyin: Bu, doğru türüdür. Sonra öğeyi ViewState'den döndürürsünüz - orada olmanız garanti edilir.

Sizin çözüm ViewState içine new List<int>() yer yoktu çünkü kötüydü

+0

Kesinlikle mükemmel - bazen ağaçlar için ağaç göremiyorum ne kadar şaşırtıcı! Yardım ettiğin için teşekkür ederim. – higgsy

İlgili konular