2012-01-31 43 views
5

我有一個非常簡單的ASP.NET MVC網站,它顯示來自數據庫的圖像。用戶填寫一些搜索參數,並且View從數據庫中返回與搜索條件匹配的圖像列表。ASP .NET MVC視圖之間存儲大量參數

我現在正在添加分頁,其中取決於頁碼,我跳過從數據庫中檢索的一定數量的圖像。我已經爲第一頁工作了。當我點擊結果的第二頁時,我的搜索參數會丟失,因爲我目前沒有機制在視圖之間存儲搜索參數。

什麼是最好的方法。我可以有很多搜索參數。我應該將它們全部存儲在Session還是隱藏字段中?這感覺像一個黑客。我應該有一個獨立的ViewModel來保存搜索參數並將其存儲在會話中嗎?

什麼是典型的方法?

回答

1

您通常會將交叉分頁數據存儲在隱藏字段中。對於可擴展性,會話應限於會話範圍的相關數據。如果將數據放入隱藏字段會造成漏洞,則可以考慮序列化視圖模型並將其作爲一個隱藏字段加密。將它放入網址是另一種選擇,但您僅限於可以放在那裏的內容數量。

+0

謝謝。我喜歡序列化視圖模型和單個隱藏字段的想法。我來自WPF/WinForms背景,並且在頁面上有很多隱藏字段的想法感覺不太好。我想我必須忍受它。我做了更多的搜索,它似乎是最常見的方法。 – Lance 2012-01-31 16:55:49

1

我會把它們全部放在你的「下一個」和「上一個」鏈接的查詢字符串中。這將允許訪問者爲完整的URL添加書籤,並使用相同的排序和過濾器設置返回到同一頁面。