2013-10-05 58 views
0

我在UserControl中填充集合,然後從集合中創建動態LinkButton控件。當點擊時,回發時,收藏是空的。這是行爲的設計還是有什麼我可以做的,以保持在回發填充集合沒有重新填充它們在代碼中?我是否需要在表單回傳中重新查詢?用戶控件中的集合在回發中丟失的內容

+0

類似的解決方案的所有變量都設置在頁面的生命週期結束。這是設計,它是[無狀態HTTP](http://en.wikipedia.org/wiki/Stateless_protocol)的本質。 –

+0

但是,回發時,ASP.NET頁面上定義的變量完好無損。什麼機制對此負責?爲什麼usercontrols會被區別對待? – Metaphor

+0

@Metaphot:頁面和'UserControl'之間沒有區別。也許你有一個不會被破壞的靜態字段。不過,我強烈建議不要在ASP.NET等多線程環境中使用靜態字段。 –

回答

2

一個類繼承Web.UI.Page定義的每個變量將在頁面生命週期(包括控件和字段)的結尾被破壞,因此,這將是null在回傳如果不對其進行重新初始化。

在回發中堅持它的一種方法是將其存儲在Session-variable中。

你會發現關於如何堅持在回發此變量的所有選項的完整列表:http://msdn.microsoft.com/en-us/magazine/cc300437.aspx

  • 應用
  • 餅乾
  • 表單提交/隱藏的表單字段
  • 查詢字符串
  • Session
  • ASP.NET中的新狀態容器
  • 緩存
  • 語境
  • 的ViewState
  • 的Web.config和Machine.config中的文件 結論

它的HTTP的性質,這是無國籍

+0

謝謝!緩存正是我需要的。 – Metaphor