2011-07-18 88 views
1

我遇到了瀏覽器[BACK]按鈕的問題。讓我解釋。單擊瀏覽器後恢復會話變量[BACK]按鈕

有一個名爲ManageClient.aspx的頁面。該頁面包含[子]客戶端地址(孩子,意味着您正在查看的客戶端)和父客戶端地址(孩子繼承的客戶端)的地址列表。當有人點擊查看ManageClient.aspx頁面中的客戶端時,沒有查詢字符串(但我添加了一個變量來解決我的問題)。但是,對於某些JavaScript,會話變量稱爲Session(「Id」),最終會在ManageClient.aspx頁面中設置。

當用戶單擊ManageClient.aspx頁面上的地址時,它們將被帶到AddressEditor.aspx頁面,並在查詢字符串中傳遞一個「Id」變量來指示地址標識。

地址編輯器中的超鏈接已被打破了一段時間。這是我的目標 - 解決它們,以便AddressEditor.aspx填充正確的客戶端。所以爲了解決這個問題,我在ManageClient.aspx頁面添加了一個名爲「Id」的查詢字符串變量。這個「Id」變量表示您正在編輯的客戶端的客戶端ID。此外,我還在AddressEditor.aspx頁面中添加了一個名爲「ClientId」的查詢字符串變量。由於客戶端AddressEditor與ManageClient.aspx頁面處於同一嚮導工作流程中,因此需要設置該「ClientId」查詢字符串參數,以便在到達AddressEditor.aspx頁面時設置Session(「ClientId」)會話變量,以便如果用戶繼續進行該客戶端的嚮導,則它們處於正確的上下文中。這很好。

當用戶進入[child]客戶端的ManageClient.aspx頁面,然後單擊父客戶端地址(將它們發送到父客戶端上下文中的AddressEditor.aspx)時,不起作用的是,然後單擊[BACK]按鈕(將它們發送回ManageClient.aspx頁面)。我希望他們回到子客戶端的上下文中,而不是父客戶端。我在ManageClient.aspx Page_PreRender事件中放置了一個斷點,事實上它確實被調用了。但是,當頁面呈現時,頁面會填充父客戶端,而不是子客戶端。但是,如果我突出顯示URL欄並點擊[ENTER],該頁面將作爲子客戶端呈現(AWESOME),因此它必須正確填充我的會話變量作爲子客戶端(但呈現不正確),但我希望它能做到這一點當他們點擊[BACK]按鈕時。如何修復剛纔描述的這個工作流程的ManageClient.aspx頁面?

這裏是Page_PreRender事件:

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender 

    Dim clientId As Integer = CType(Request.QueryString("ClientId").ToString, Integer) 
    If clientId > 0 Then 
     Session("ClientId") = clientId 
     Me.LIMSClientId = clientId 
    End If 

End Sub 
+0

我明白了......請不要在此花費任何時間。當Stack Overflow允許我時,我會在明天發佈答案。 – MacGyver

回答

1

這是非常簡單的。頁面中的列表正在建立在Page_Load中,該頁面在Page_PreRender之後被調用 - 其中正在設置會話變量。我只需將我在該Page_PreRender事件中的代碼放在頁面中數據列表正在構建的代碼的上方。

相關問題