如何在Session中更好地存储来自客户端的过滤器

时间:2013-04-29 08:45:09

标签: c# javascript asp.net-mvc filter

我们的应用程序几乎每个页面都有几个过滤器。我目前的目标是实现一种机制来存储过滤器并在用户重新打开页面时预先选择它们,因此至少在一个会话期间,用户在打开页面时没有反复选择它们,或者从页面到页面。

应用程序是用ASP.NEt MVC编写的,我们使用大量的javascript来处理过滤。目前,只在客户端进行大量过滤(例如,检索网格的完整数据,并且仅在客户端上进行所有进一步过滤)。

我在想这些步骤:

  • 控制器的基类:Method1从common.js获取方法发送的数据,并将其保存在Session中。
  • 常见JS:向common.js添加一个方法,该方法接受用户做出的选择,并与控件的名称和页面名称一起发送给服务器Method1,以便将新选择存储在会话对象。
  • 控制器的基类:Method2接受控制器的名称,页面名称并检索Session对象。
  • 单个页面的JS:在onload事件中指定所有现有过滤器并从Method2获取数据。

但是,我不确定这种解决方案是否具有普遍性和最佳性。

我不想重新发明轮子。是否有任何现有的解决方案或模式用于此任务?或者任何想法如何做得更好?

1 个答案:

答案 0 :(得分:0)

我想到的一种方式是使用Cookie而不是会话,因为它只是部分,你可以从JavaScript本身读取cookie。它将保存服务器资源,因为您不会在会话中保存任何内容。如果您的选择标准不是很敏感,则不应存在任何安全问题