2009-11-25 59 views
1

,我遇到的問題如下:喜歡的東西視圖狀態和會話

我現在有生成按鈕並把它們放在一個母版頁上的佔位符自定義類。

這些按鈕的事件將特定值放入會話中,這些值與數據庫查詢的值不同。實質上,這些按鈕用作圖表的過濾器。

創建所有按鈕後,我意識到會話值在頁面之間保持不變,因此每當用戶輸入另一個頁面而另一個頁面處於打開狀態時,打開頁面上選定的過濾器將保持不變以用於新頁面那是開放的。

起初,我想使用視圖狀態而不是會話,但後來才意識到母版頁和內容頁不共享相同的視圖狀態。

目前,我正在考慮使用sesson鍵的前綴來標識過濾器實際存在的頁面。但是,如果用戶希望同時打開多個頁面,我不希望超過會話的數量。

任何需要在app_code,master和內容頁面之間共享viewstate(或其他存儲值的方式)的解決方案?

+0

因此,你所說的是,當你重定向到一個新的頁面,你想要過濾器的默認值,而不是來自上一頁的值? – 2009-11-25 15:32:49

+0

我是這個項目的另一個開發人員。部分問題是我們用來顯示各種圖表的系統有四個屏幕。每個屏幕(只有一個瀏覽器實例)需要能夠跟蹤不同於其他每個屏幕的內容。因此,我們的視圖狀態的初始使用。會話只是一個實例,因此當您更新一個瀏覽器時,它將使用來自其他任何實例上最近更改的所有過濾器。 – Maximillian 2009-11-25 16:00:54

+0

過濾器值有多長,有多少?你考慮過網址查詢嗎? – 2009-11-25 16:04:29

回答

1

使用HttpContext.Current.Items,它是一個鍵值對集合,其生命週期爲單個Http Request。

+0

這聽起來像是我的問題的正確方向。 但是,由於它只有一個請求的生命週期,用戶是否可以選擇多個過濾器並使這些值在不同的選擇中保持不變? – BlankenshipMQ 2009-11-25 15:55:29

+0

在多個頁面的情況下,因此多個Http請求,不,這不起作用。 – joerage 2009-11-25 18:54:47

0

我們在這裏談論了多少個過濾器?將過濾器值存儲在URL中。你見過一些谷歌或電子商務網站使用的網址嗎?他們很長。下面是我如何做到這一點:

  1. 我存儲在查詢中的過濾器值一樣,www.chart.com?filter1=val1 &過濾器2 =值2等
  2. 我的用戶JQuery's query plugin操作上查詢客戶端,然後再次使用新查詢從服務器請求圖表。
  3. 這樣,我就不會在會話,餅乾或類似的事情上枯萎,如果用戶想要將書籤存儲到特定的圖表或將它發送給朋友,他們可以和過濾器被保留。
0

如果數據不是太長,Cookie是一個典型的解決方案。

另一種選擇是使用Silverlight隔離存儲。 Silverlight控件本身可能是不可見的(沒有UI)。