是否可以在一个会话变量中添加多个值?
在我的登录页面中,一个会话变量带有一个值,我需要在另一个页面中的同一会话变量中附加一些其他数据。
在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' 。
是否有任何机制可以附加到会话变量中,而不是分配给字符串,并再次附加指定的字符串。
请建议。
答案 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值中,并且只在需要组合值时将它们组合起来。