2011-12-15 75 views
1

對此可能有一個簡單的答案,我只是沒有看到它B/C我太靠近項目 - 就這樣吧。如何讓後退按鈕和會話狀態一起工作?

我有一個asp.net 2.0搜索應用程序。它是一系列以搜索表單開始並以向用戶顯示結果結束的頁面。在搜索和結果頁面之間是一個篩選器頁面,顯示用戶可以篩選搜索結果的一系列篩選器。我在搜索頁面上執行初始搜索並將結果存儲在會話中。如果初始搜索結果總數超過特定數量(例如,讓我們假設爲50),則用戶進入過濾器頁面。在那裏他們提供了許多可用於結果的過濾器。

將所選過濾器應用於搜索結果後,如果計數仍超過50,則它們將保留在頁面上,並且只有尚未選擇的過濾器仍顯示在頁面上。如果計數小於50,它們將被帶到結果頁面。現在,如果他們在過濾器頁面上,但希望看到結果,則會出現一個按鈕,該按鈕將採用結果的當前狀態並將用戶帶到結果頁面。

這裏是我的問題 - 如果我在結果頁面上應用一些過濾器後,點擊後退按鈕(無頁面緩存),我怎樣才能得到搜索結果的前一個狀態的任何過濾器之前我選擇了已經申請?更進一步,如果我在一系列說4「應用過濾器」之後到達結果頁面(應用過濾器 - 仍然超過50,應用其他過濾器 - 仍然超過50,再應用另一個過濾器 - 仍然超過50,最後應用另一個過濾器 - yay!50以下去結果頁面),如果我繼續點擊後退按鈕,如何從會話中獲取每個版本的不斷縮小的搜索結果?

對不起,如果這有點奇怪,並不容易理解 - 這是一個不夠簡單的問題,只是把它包裝在一些簡單的句子。

我非常渴望任何想法(與手邊的問題有關)或問題。

UPDATE - 僅供參考,我沒有決定多頁設計。有一項要求聲明它遵循現有第三方搜索應用程序的流程(逆向工程非常棒?)。

感謝

+0

也許你應該讓你的搜索和過濾信息的網址,而不是在會話狀態。我在搜索應用程序上工作了幾年,我希望我先走了。 只要想一想書籤,如果用戶爲結果頁面添加書籤,如果他明天可以從書籤中獲得他的結果,那對他來說會很好。如果將搜索參數存儲在會話狀態中,則不能這樣做。 – Johnny5 2011-12-15 20:31:37

+0

我假設這是網絡表單,並且您正在將項目放入會話中。你可以發佈一些代碼嗎?你是否可以在模態彈出窗口中進行一些改進,以避免頁面間的衝突? – 2011-12-15 20:32:14

回答

0

不是太重要,但你描述聽起來像一個認真什麼擡高了處理搜索的方式。

通常,您的搜索條件和結果在同一頁上。當您修改標準並點擊搜索時,您應該只顯示前50個結果,並讓他們知道還有更多。這個操作並不是那麼昂貴,因爲你必須在兩種情況下都運行查詢。

看看NewEgg.com並嘗試從this page進行「高級搜索」。您會注意到左側有大約20種不同的標準因素。當您添加新標準時,頁面頂部的麪包屑會發生變化。他們在麪包屑中的每一個旁邊都有一個(x),這樣您就可以快速排除搜索結果中的任何條件。 Voila不需要後退按鈕。

請注意,您不需要會話狀態來處理此問題。如果他們真的想要,最多可以使用隱藏的表單字段,這些字段仍然支持瀏覽器中的後退按鈕使用。

0

按原樣使用當前基於會話的參數,但讓任何查詢字符串參數覆蓋它們。這樣,你可以保持你的值不分配給每個url,但是可以適應任何以前的手動數據庫(查詢歷史記錄中的查詢字符串)。

(不要使用POST搜索。)