2009-11-25 53 views
1

,我遇到的问题如下:喜欢的东西视图状态和会话

我现在有生成按钮并把它们放在一个母版页上的占位符自定义类。

这些按钮的事件将特定值放入会话中,这些值与数据库查询的值不同。实质上,这些按钮用作图表的过滤器。

创建所有按钮后,我意识到会话值在页面之间保持不变,因此每当用户输入另一个页面而另一个页面处于打开状态时,打开页面上选定的过滤器将保持不变以用于新页面那是开放的。

起初,我想使用视图状态而不是会话,但后来才意识到母版页和内容页不共享相同的视图状态。

目前,我正在考虑使用sesson键的前缀来标识过滤器实际存在的页面。但是,如果用户希望同时打开多个页面,我不希望超过会话的数量。

任何需要在app_code,master和内容页面之间共享viewstate(或其他存储值的方式)的解决方案?

+0

因此,你所说的是,当你重定向到一个新的页面,你想要过滤器的默认值,而不是来自上一页的值? – 2009-11-25 15:32:49

+0

我是这个项目的另一个开发人员。部分问题是我们用来显示各种图表的系统有四个屏幕。每个屏幕(只有一个浏览器实例)需要能够跟踪不同于其他每个屏幕的内容。因此,我们的视图状态的初始使用。会话只是一个实例,因此当您更新一个浏览器时,它将使用来自其他任何实例上最近更改的所有过滤器。 – Maximillian 2009-11-25 16:00:54

+0

过滤器值有多长,有多少?你考虑过网址查询吗? – 2009-11-25 16:04:29

回答

1

使用HttpContext.Current.Items,它是一个键值对集合,其生命周期为单个Http Request。

+0

这听起来像是我的问题的正确方向。 但是,由于它只有一个请求的生命周期,用户是否可以选择多个过滤器并使这些值在不同的选择中保持不变? – BlankenshipMQ 2009-11-25 15:55:29

+0

在多个页面的情况下,因此多个Http请求,不,这不起作用。 – joerage 2009-11-25 18:54:47

0

我们在这里谈论了多少个过滤器?将过滤器值存储在URL中。你见过一些谷歌或电子商务网站使用的网址吗?他们很长。下面是我如何做到这一点:

  1. 我存储在查询中的过滤器值一样,www.chart.com?filter1=val1 &过滤器2 =值2等
  2. 我的用户JQuery's query plugin操作上查询客户端,然后再次使用新查询从服务器请求图表。
  3. 这样,我就不会在会话,饼干或类似的事情上枯萎,如果用户想要将书签存储到特定的图表或将它发送给朋友,他们可以和过滤器被保留。
0

如果数据不是太长,Cookie是一个典型的解决方案。

另一种选择是使用Silverlight隔离存储。 Silverlight控件本身可能是不可见的(没有UI)。