在ASP.net页面上传递值

时间:2010-04-07 12:02:54

标签: c# asp.net session

我需要将一个ID列表从一个页面传递到另一个页面,我正在考虑使用查询字符串,但考虑到要传递的ID数量可能达到300,我认为这不是一个好主意。 我理解的选项可能是会话的使用,这在我看来是我的最佳解决方案,但另一方面

当用户执行某个操作并且不再需要id列表时,我当然可以清除会话,但如果用户离开页面而不执行任何操作我想要清除会话,我该怎么办?

如果多个用户使用相同的功能,我是否需要将会话的项目混淆,或者会话是针对单个用户的呢?

我在asp.net c#

工作

由于

4 个答案:

答案 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。