我们可以在ASP.net中向同一会话变量添加多个值

时间:2016-02-14 11:15:02

标签: asp.net vb.net session-variables

是否可以在一个会话变量中添加多个值?

在我的登录页面中,一个会话变量带有一个值,我需要在另一个页面中的同一会话变量中附加一些其他数据。

在Login.Aspx.Vb

   Session.Add("UserKey", "DATA_1_PAGE1 ")

在Dashboard.Aspx.Vb

   Session.Add("UserKey", "| DATA_2_PAGE2")

在Process.Aspx.vb

   Dim Session_StateValue = HttpContext.Current.Session("UserKey")

在Session_StateValue中,我希望我的值为'DATA_1_PAGE1 | DATA_2_PAGE2' 。

是否有任何机制可以附加到会话变量中,而不是分配给字符串,并再次附加指定的字符串。

请建议。

2 个答案:

答案 0 :(得分:2)

处理字符串,您可以使用List,Dictionaries,Arrays,String等。

连接字符串值的最简单方法可能是

Session.Add("UserKey", "DATA_1_PAGE1")
Session.Add("UserKey", Session("UserKey").ToString() & "| DATA_2_PAGE2")
Dim str As String = Session("UserKey").ToString()

另一种方法可能是使用List(Of String)

Session.Add("key", New List(Of String) From {"string1"})
DirectCast(Session("key"), List(Of String)).Add("string2")
Dim str As String = String.Join("|", DirectCast(Session("key"), List(Of String)).ToArray)

现在,根据你将如何使用它,持久性,序列化等,一个可能比另一个更合适。

答案 1 :(得分:0)

您可以在Session中存储多个字符串,例如DateTime或您自己定义的某个Person对象 - 如何让系统实现“附加”,然后对所有种类都有效(组合)值?

所以唯一的方法是将原始值作为字符串,自己附加新值并将该组合放在Session中。

但请确保当用户碰巧两次提交第二页时(用户总会找到方法......),您不会将该值附加两次。也许最好将它保存在单独的Session值中,并且只在需要组合值时将它们组合起来。