我需要将一个ID列表从一个页面传递到另一个页面,我正在考虑使用查询字符串,但考虑到要传递的ID数量可能达到300,我认为这不是一个好主意。 我理解的选项可能是会话的使用,这在我看来是我的最佳解决方案,但另一方面
当用户执行某个操作并且不再需要id列表时,我当然可以清除会话,但如果用户离开页面而不执行任何操作我想要清除会话,我该怎么办?
如果多个用户使用相同的功能,我是否需要将会话的项目混淆,或者会话是针对单个用户的呢?
我在asp.net c#
工作由于
答案 0 :(得分:3)
如果多个用户使用相同的功能且每个用户的ID相同,则使用“应用程序状态”或“单例”模式。
如果每个用户都需要拥有自己的id列表,那么您可以使用每个用户唯一的会话状态。在经典的asp中,你不应该使用对象,例如集合,但在ASP.NET中,你可以将它们放在列表,数组等中。
在ASP.NET中,如果启用会话服务,则可以在服务器之间共享会话状态,或者将会话状态放在数据库中。
你也可以考虑使用cookie,如果id是数字,你可以用逗号分隔它们并以相对较低的开销重新加载它们,但需要注意的是智能用户可以改变这些值。
最后,您可以在调用之间将这些值存储在数据库表中。
答案 1 :(得分:1)
会话是每个'用户'(更像是浏览器实例)。
会话在预设/预定义超时后到期。
答案 2 :(得分:1)
每个用户的会话工作,只要您没有负载平衡Web服务器就可以使用会话来执行此操作(可能是数据集或哈希表会话变量,这可能会变得丑陋......)。
要清除会话,请查看:Session.Contents.Remove。
答案 3 :(得分:0)
使用两种方法的组合 - 查询字符串和会话。
当您需要存储您的ID时,请将它们重新打入Session,但您使用的密钥应该是随机生成的Guid
:
string key = Guid.NewGuid().ToString();
Session[key] = myIDs;
记住guid,并在用户离开页面时将其附加到查询字符串(他们将点击超链接或单击按钮离开页面,然后您可以附加它)。
如果用户没有执行魔术操作并离开页面,则检索ID的密钥在离开时会丢失。当会话回收/终止或执行Session.Clear()
时,将删除放入Session的ID。