为什么我无法访问上一次回发期间存储的Page_Init中的Session值?

时间:2015-01-27 00:49:43

标签: asp.net vb.net session

我在回发期间将会话值存储在Page_Load中,但是我在下次往返时无法在Page_Init中访问它们。我的逻辑的要点是最终用户应该能够在Page_Load期间登录回发,其中值存储在Session对象中,然后在下一次往返中我可以从Session对象中获取这些值并初始化自定义对象类型。最初我尝试根据Session中存储的值初始化我的对象,但是当我发现它没有工作时,我在Page_Init中添加了一些代码来调试,发现我根本无法访问它们。问题是,如果我完全重新加载页面,我可以很好地访问这些值 - 但是如果我尝试刷新或尝试再次触发回发按钮,就好像代码被忽略一样。

我能够使用此逻辑访问Session中的其他值(我有一个" StartTime"值I'我能够在BeginRequest中创建它)但是我无法访问在Page_Load中回发期间创建的内容。

这与我的自定义类型无关,因为我已尝试使用硬编码值并得出相同的结果。

处理我的回发的地方:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Select Case Me.form_action.Value.ToLower()
        Case "save"
            If Me.tab.ActiveTabIndex = 0 Then
                cart.Login(Me.login.Value, Me.password.Value)
                UpdateRecord()
            End If
    End Select
End Sub

这些方法更新数据库并存储会话值:

Public Sub UpdateRecord()
    cart.UpdateDB()
    SaveCart()
End Sub
Public Sub SaveCart()
    If Not cart.ID > 0 Then Exit Sub
    Me.cart_id.Value = cart.ID
    Session("seminars_cart_id") = cart.ID
End Sub

这是我尝试访问Page_Init

中的数据的地方
Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init
    If Session.Keys.Count > 0 Then
        phDbg.InnerHtml = ""
        For Each k As Object In Session.Keys
            Me.phDbg.InnerHtml += String.Format("Session({0}) - {1}<br />", k, Session(k))
        Next
    End If
End Sub

0 个答案:

没有答案