替代会话变量被覆盖

时间:2011-12-23 13:09:49

标签: c# asp.net visual-studio-2010 session-variables

我们在工作的地方设有审核系统。经理选择要审核的员工,然后将EmployeeID设置为Session [“EmpID”]变量。现在,经理可以输入该员工的信息。

我们的问题: 当经理在浏览器中打开另一个选项卡或窗口(即Internet Explorer)时,搜索不同的员工,它会将Employee#2 ID设置为Session [“EmpID”]变量,覆盖过多第一个。当经理切换回员工#1并输入信息时,他们认为他们正在为#1输入信息,但是由于他们最后选择了#1,因此输入#2信息。

有没有人有想法防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

使用选项卡式浏览时,您实际上使用相同的asp.net会话,因此,如果您没有从其他页面中唯一地分隔一个页面的缓存,则会获得相同的数据。

如果您的网页使用会话存储数据,请使用唯一标识符(例如GUID)作为密钥的前缀。将guid存储在隐藏字段或ViewState中。

也许仅将EmpID存储在ViewState中就足够了。然后Tab1将保持它的值,即使Tab2有另一个值。

答案 1 :(得分:1)

将empID存储在页面内容中的隐藏字段/标记中听起来更为可行。根据字符串记录= span.innerText 保存记录,因为它将在页面上而不是会话