我的网站包含一个主要信息中心页面,其中包含建筑物列表。
通过单击一个建筑物,它将打开一个新的浏览器窗口,其中包含该特定建筑物上的许多功能和特征。
在这种情况下,我可以一次打开多个浏览器窗口,每个窗口代表另一个建筑物的数据。如何设置会话数据不会在窗口之间混淆?
答案 0 :(得分:1)
您可以通过在会话中存储数据时附加建筑物的唯一标识符作为密钥的一部分来识别每个建筑物的信息。
所以不要这样做:
Session["Building"] = something;
做
Session["Building_"+buildingID] = something;
现在,使用建筑物ID,您始终可以在当前窗口中找到属于建筑物的相应信息。
话虽如此,我会质疑为什么你真的需要在Session中存储它?每次从数据库获取数据是否便宜?除非你在数据库端有真正昂贵的操作,否则我不担心性能。
答案 1 :(得分:0)
我们使用在给定页面上的ViewState中存储ID的组合来测试处理不同窗口的复杂Session对象的ID。数据。鉴于不同浏览器在标签,页面和会话处理方面的差异,您可以获得一些非常古怪的行为。