尽管这里有类似的问题,但没有给出完整的答案,所以我发布了一个新的答案。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