我試圖將會話狀態存儲在母版頁中以跟蹤以前的URL。下面是我在做什麼.NET主頁面會話狀態變量不保存
Public Property PreviousPage() As String
Get
Return Session("theprevpage")
End Get
Set(value As String)
Session("theprevpage") = value
End Set
End Property
Private Function HandleSiteNode(ByVal sender As Object, ByVal e As SiteMapResolveEventArgs) As SiteMapNode
Dim currNode As SiteMapNode = SiteMap.CurrentNode.Clone(True)
Dim tempNode As SiteMapNode = currNode
Dim strPrev As String = PreviousPage
' Append parent pages query string back onto the parent's node URL
If Not tempNode.ParentNode Is Nothing Then
If strPrev.Contains("?") Then
tempNode.ParentNode.Url = tempNode.ParentNode.Url + "?" + strPrev.Split("?")(1)
End If
End If
Return currNode
End Function
在主人頁面加載功能
If Not IsPostBack Then
AddHandler SiteMap.SiteMapResolve, AddressOf HandleSiteNode
PreviousPage = Request.UrlReferrer.ToString()
End If
現在,這裏是它得到奇怪。
第一頁是主負載未被調用的登錄頁面。登錄後,進入main.aspx頁面,併成功將「login.aspx」頁面保存爲會話狀態。
現在,當我在登錄後第二次導航時,會話狀態設置成功,但在會話設置成功後調用HandleSiteNode時,會話仍會說url是「login.aspx」而不是「main.aspx」
沒有在代碼中的其他地方設置此會話狀態,它似乎恢復到它自己以前的值。
無論我有多少鏈接點擊&會話多少次設置,會話變量都不會改變任何東西,除了「login.aspx的」
幫助別人!
編輯:另一個奇怪的細節,當我將AddHandler行從母版頁移動到非母版頁時,會話狀態被正確保存。但是,如果我嘗試將Addhandler代碼移入主頁面MainContent.Load函數,它仍然不起作用
Request.UrlReferrer不可靠。 – Win
@Win是的,我意識到這一點,但我的問題仍然存在 –