儘管這裏有類似的問題,但沒有給出完整的答案,所以我發佈了一個新的答案。mvc - 在多頁面網格中存儲複選框狀態
我有一個分頁的網格 - jqgrid - 它每次都從服務器接收數據,N行(10,20等等,具體取決於用戶選擇)。網格行模型中有一個布爾值,它被轉換爲顯示行中的複選框。
當用戶選中複選框並導航到下一個網格頁面時,複選框的狀態顯然會丟失。什麼是保存它的最佳方法?我看到的兩種可能性都完全滿足我:
我可以將選中實例的ID保存到複選框單擊的全局javascript對象中。因此,當獲得新的數據集時,我可以迭代所有收到的實例,查找已經選擇的實例。然而,這可能意味着很多javascript操作,並且最終用戶可能會減速,如果有很多選定的實例。
我可以將選擇存儲在服務器上(會話,數據庫,其他任何)。這種方式每次模型生成時,我都會用適當的值填充它的布爾參數。但是,這可能意味着當用戶離開我的頁面而不提交更改並返回時,記錄狀態將被恢復。我不確定這是否好。通常,我強烈反對在用戶提交表單之前在服務器端存儲任何內容。
那麼,你會選擇/提供什麼?
我正在使用ASP.NET MVC 2.0,C#4.0,如果這很重要。
Session的問題在於,如果服務器資源不足,它將受到垃圾回收處理。存儲「ViewState」(見下文)不存在這個問題。 – awrigley 2010-10-02 08:52:51