繁体   English   中英

跨页面ASP.net传递值

[英]Passing values across pages ASP.net

我需要将一长串Ids从一页传递到另一页,我当时在考虑使用querystring,但考虑到要传递的id数量可能达到300个,我认为这不是一个好主意。 从我的理解来看,一个选择可能是使用会话,在我看来,这似乎是一个最佳解决方案,但另一方面

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

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

我正在asp.net C#中工作

谢谢

如果多个用户使用相同的功能,并且每个用户的ID相同,则使用应用程序状态或Singleton模式。

如果每个用户都需要有自己的ID列表,则可以使用每个用户唯一的会话状态。 在经典的ASP中,您不应该使用对象(例如集合),但是在ASP.NET中,您可以将它们放置在列表,数组等中。

在ASP.NET中,如果启用会话服务,则可以在服务器之间共享会话状态,也可以将会话状态放置在数据库中。

如果ID是数字,您也可以考虑使用cookie,可以用逗号分隔它们并以相对较低的开销重新加载它们,但要注意的是,聪明的用户可以更改这些值。

最后,您可以将这些值存储在两次调用之间的数据库表中。

会话是按“用户”进行的(更像浏览器实例)。

会话在一些预设/预定义的超时后过期。

会话对每个用户有效,只要您不平衡Web服务器的负载,就可以使用会话来执行此操作(可能是数据集或哈希表会话变量,这可能很难看...)。

要清除会话,请查看:Session.Contents.Remove。

结合使用两种方法-查询字符串和会话。

当您需要存储ID时,请将其重击到Session中,但是您使用的密钥应该是随机生成的Guid

string key = Guid.NewGuid().ToString();
Session[key] = myIDs;

请记住该guid,并在用户离开页面时将其附加到查询字符串中(他们将单击超链接或单击按钮以离开页面,然后可以将其附加)。

如果用户不执行魔术操作而离开页面,则检索ID的键在离开时会丢失。 当Session回收/终止或执行Session.Clear()时,将删除放置在Session中的ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM