如何使用VB.Net在公共属性中创建会话变量

时间:2012-10-04 15:26:51

标签: asp.net vb.net session

我之前已经问了一个类似的问题,但这是我的头脑!在ASPX页面上,我有这个属性:

Public ReadOnly BreadQuestionnaire as Bread 
                          Implements IQuestionnaire.BreadQuestionnaire
       Get
           If Me.Session("BreadQuestionnaire") Is Nothing Then
              Me.Session("BreadQuestionnaire") = New Bread()
           End If
       Return TryCast(Me.Session("BreadQuestionnaire"),Bread)
      End Get
End Property

我遇到的问题如下:

  • 留在页面上,当我第一次进入属性时检查会话是否存在,返回true并且永远不会创建会话变量
  • 这会导致我出现问题,因为我无法根据该对象设置会话值
  • 我还注意到,当我在页面上设置会话时,在页面上玩这个会话没有被保留回来。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

Public ReadOnly BreadQuestionnaire as Bread 
                          Implements IQuestionnaire.BreadQuestionnaire
       Get
           Dim obj = TryCastMe.Session("BreadQuestionnaire"), Bread)
           If (obj IsNot Nothing) Then
              obj = new Bread()
              Me.Session("BreadQuestionnaire") = obj
           End If

           return obj
      End Get
End Property

无论何时更改面包对象上的属性,都必须使用会话中的新属性值恢复该对象。更新属性时,会话不会更新。所以你需要一个制定者才能做到这一点。