2011-09-08 64 views
8

我有具有以下aspx頁:存儲一列表<int>在視圖狀態

  • 在每個
  • 鏈接按鈕一個LinkBut​​ton甲中繼器具有一個整數值
  • 用戶的commandargument控制

這個想法是,當用戶點擊linkbutton時,commandarguement的值被存儲在List中。沒問題,你可能會想,但是我需要將值存儲在usercontrol的列表中,而不是ASPX頁面中。該列表需要在回傳中持久化,因此它也需要存儲在視圖狀態中。

所以我在用戶控件創建一個公共屬性,像這樣:

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

我得到的問題是該值實際上從未添加到列表中。計數始終爲零。

我敢肯定,它只是我設置的屬性錯了,但我不知道如何正確的IT ..

任何幫助將不勝感激。

感謝 鋁

回答

17

你吸氣是錯誤的。這是正確的變體:

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

在這裏,您首先檢查是否有你在ViewState中需要已經東西,如果沒有,您可以添加它。然後你從ViewState返回物品 - 它保證在那裏。因爲它沒有把new List<int>()到ViewState中

您的解決方案是壞

+0

絕對完美 - 令人驚奇,你不能怎麼見木有時樹!謝謝你的幫助。 – higgsy

相關問題