我们可以在masterpage中存储viewstate吗?

时间:2009-11-16 05:45:53

标签: viewstate

实施例

我有一个有多个客户的gridview。 当用户单击客户链接时,CustomerId将存储在会话“CustomerId”中。

如果我在多个标签上打开多个客户详细信息,则会覆盖会话“CustomerId”。 所以在会话中存储customerid是没有意义的。

我只想存储不同标签的customerid

有没有办法将customerid存储在母版页的viewstate中? (假设有一个母版页和多个内容页。)

3 个答案:

答案 0 :(得分:1)

我通常会尝试将URL用于特定于页面的状态信息。使用会话或其他一些共享存储很容易变得混乱。如果状态数据量在URL中传递有点多,那么一种方法可能是重新设置在会话中存储信息的方式。通过创建一个用于保存所需数据的类,在会话中存储几个这样的对象,并通过一些生成的请求ID来识别它们。然后可以在URL中传递此请求ID,以允许页面从会话对象中获取正确的状态信息。

答案 1 :(得分:0)

没有。母版页不会在不同页面的请求之间“生效”,您将获得与在页面的视图状态中存储值相同的效果。

答案 2 :(得分:0)

我通常会使用查询字符串进行此类操作,主要是为了使页面可以添加书签(如果使用sessionstate或表单值,则无法为页面添加书签)。正如您在对Fredrik的回答的评论中所说,这意味着用户可以操纵URL来查看不同的客户,但如果您检查是否允许用户访问指定的客户,则这不是问题。

如果你真的不想使用查询字符串,我会使用隐藏的表单字段来传递ID。您仍然应该检查是否允许用户看到客户,而不是盲目地假设一切都很好。