2011-02-02 33 views
1

在意識到一些檢查沒有以期望的方式響應之後,我正在爲自定義控件挖掘HttpContext和OnInit事件。ASP.Net Control.OnInt和HttpContext

在當前上下文的items集合中,我存儲了一個對象(序列化),我希望在每個回發中詢問一次。第一次渲染控件時,items []是否爲null,然後它會填充到該行的某處,並且用戶單擊一個按鈕以回傳數據。

現在,在按鈕提交事件中,我將項目[key]設置爲null,以確保在回發中我沒有存儲任何內容,但它始終包含一個值。

我假設OnInit處理程序有一個對前一個狀態的引用,因此'錯誤'假定items []應該包含一個值。這是OnInit的工作方式,還是我錯過了更大的圖片?

感謝, 埃裏克

回答

0

Items不跨請求持久化。從最初的請求到回發請求,表示客戶端和服務器之間的兩個不同的請求生命週期,以及兩個不同的Items實例。通過請求持久保存數據需要使用Session,Cache或ViewState。

+0

但這沒有意義。項目[]在兩個不同的請求之間保持不變,例如:items [key] =用戶登錄時的對象,用戶繼續通過應用程序並決定將更改提交給配置文件。在提交期間,應該存儲更改,並且items [key] = null。但是在回發後,items [key] = object而不是null,這意味着items []會被持久化? – JadedEric 2011-02-02 10:46:40