восстановление переменной сеанса после нажатия кнопки браузера [BACK] - PullRequest
1 голос
/ 18 июля 2011

У меня проблема с кнопкой браузера [BACK]. Позвольте мне объяснить.

Существует страница с именем ManageClient.aspx. Эта страница содержит список адресов как [дочерних] клиентских адресов (дочерний означает клиент, которого вы просматриваете), так и родительских клиентских адресов (клиенты, от которых наследуется дочерний). Когда кто-то щелкает, чтобы просмотреть клиента на странице ManageClient.aspx, строка запроса отсутствует (но я добавил переменную, чтобы исправить мою проблему здесь). Однако в некоторых JavaScript есть переменная сеанса, называемая Session («Id»), которая в конечном итоге устанавливается на странице ManageClient.aspx.

Когда пользователь нажимает на Адрес на странице ManageClient.aspx, они переносятся на страницу AddressEditor.aspx, и в строке запроса передается переменная «Id», указывающая идентификатор адреса.

Гиперссылки в редакторе адресов уже давно не работают. Это моя цель - исправить их так, чтобы AddressEditor.aspx заполнял нужного клиента. Поэтому, чтобы попытаться это исправить, я добавил строковую переменную запроса на страницу ManageClient.aspx под названием «Id». Эта переменная «Id» указывает идентификатор клиента клиента, которого вы редактируете. Кроме того, я также добавил переменную строки запроса на страницу AddressEditor.aspx под названием «ClientId». Поскольку клиент AddressEditor находится в том же рабочем процессе мастера, что и страница ManageClient.aspx, мне нужно было установить этот параметр строки запроса «ClientId», чтобы при достижении страницы AddressEditor.aspx я мог установить сеанс Session («ClientId») переменная, так что если пользователь продолжает работу в мастере для этого клиента, они находятся в правильном контексте Это прекрасно работает.

Что не работает, так это когда пользователь заходит на страницу ManageClient.aspx для [дочернего] клиента, а затем нажимает на адрес родительского клиента (отправляя их в AddressEditor.aspx в контексте родительского клиента), и затем нажимает кнопку [НАЗАД] (отправляя их обратно на страницу ManageClient.aspx). Я хочу, чтобы они вернулись к контексту дочернего клиента, а не родительского клиента. Я поставил точку останова в событии ManageClient.aspx Page_PreRender, и оно действительно вызывается. Но когда страница отображается, страница заполняется родительским клиентом, а не дочерним клиентом. Но если я выделю строку URL и нажму [ENTER], страница будет отображаться как дочерний клиент (AWESOME), поэтому она должна правильно заполнить мою переменную сеанса как дочерний клиент (но отображается неправильно), но я хочу, чтобы это было сделано когда они нажали кнопку [НАЗАД]. Как исправить страницу 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

1 Ответ

1 голос
/ 19 июля 2011

Это было очень просто. Списки на странице создавались в Page_Load, который вызывался после Page_PreRender - там, где была установлена ​​переменная сеанса. Мне просто нужно было поместить код, который у меня был в том событии Page_PreRender, над кодом, где строились списки данных на странице.

...