我有一个存储一些会话变量的Page1.aspx。当Page1.aspx重定向到Page2.aspx时,某些(不是全部)会话变量“消失”并变为null。但是,这仅发生在移动设备上。当我在chrome中运行该网站时,效果很好。
起初我会将此归咎于移动设备,但会话存储在服务器上,而不是设备上。
在Page1.aspx上,有一个基于BCMember类的名为BCMember的属性。 看起来像这样:
Public Property BCMember As BCMember
Get
BCMember = Session("BCMember")
End Get
Set
Session("BCMember") = Value
End Set
End Property
在我的代码中,我将BCMember.FirstName设置为“ Joe”。这会将值存储在会话变量中。
在另一条语句中,我将另一个会话变量设置如下:
Session("AmountToPay") = 150
在Page2.aspx上,我设置了与Page1.aspx上相同的BCMember属性
Public Property BCMember As BCMember
Get
BCMember = Session("BCMember")
End Get
Set
Session("BCMember") = Value
End Set
End Property
重定向到Page2之后,在Page_Load事件中,我输入了以下三个语句:
If Session("AmountToPay") = Nothing Then
Response.Write("AmountToPay is nothing<br />")
End If
Response.Write(BCMember.FirstName & "<br />")
Response.Write(Session("AmountToPay") & "<br />"))
在我的PC上将页面加载到Chrome中后,结果如下:
乔
150
但是,当页面在我的Android手机上的Chrome上加载时,结果如下:
AmountToPay什么都不是
乔
0
似乎保留了Session(“ BCMember”),并使用session变量正确设置了BCMember属性。
为什么将Session(“ AmountToPay”)设置为“ Nothing”?
快速更新...我创建了一个测试类Test,其中一个字段AmountToPay为Double。当我以与BCMember相同的方式处理该属性时,它就很好地出现在Page2.aspx中。似乎如果使用Class并将session变量设置为与该class相等,则它将被保留。我想我只会创建一个类,该类可用于保存所有单个会话变量,并将其以这种方式传递给第二页。我没有必要那样做没有道理,但我想它是否可行...