2011-07-18 4 views
1

ブラウザ[BACK]ボタンに問題があります。私に説明させてください。ブラウザ[BACK]ボタンをクリックしてセッション変数を復元します

ManageClient.aspxというページがあります。このページには、[子]クライアントアドレス(表示しているクライアントを意味する子)と親クライアントアドレス(子が継承するクライアント)の両方のアドレスリストが含まれています。誰かがManageClient.aspxページでクライアントを表示するためにクリックすると、クエリ文字列はありません(ただし、ここで問題を解決する変数を追加しました)。しかし、一部のJavaScriptでは、Session( "Id")というセッション変数があり、最終的にManageClient.aspxページで設定されます。

ユーザーがManageClient.aspxページのアドレスをクリックすると、AddressEditor.aspxページに移動し、クエリ文字列の "Id"変数が渡され、アドレスIDを示します。

アドレスエディタのハイパーリンクがかなりの間壊れています。これが私の目標です。正しいクライアントのためにAddressEditor.aspxが生成されるように修正することです。そこで、これを修正するために、 "Id"という名前のManageClient.aspxページにクエリ文字列変数を追加しました。この "Id"変数は、編集中のクライアントのクライアントIDを示します。さらに、「ClientId」というAddressEditor.aspxページにクエリ文字列変数を追加しました。クライアントのAddressEditorはManageClient.aspxページと同じウィザードワークフローにあるため、「ClientId」クエリ文字列パラメータを設定してAddressEditor.aspxページに到達したらセッション(「ClientId」)セッションを設定する必要がありましたユーザーがそのクライアントのウィザードで続行する場合、ユーザーは正しいコンテキストになります。これは素晴らしいです。

ユーザーが[子]クライアントの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

私はそれを理解しました。これには時間を費やしてはいけません。私は明日スタックオーバーフローが私に許可するときに答えを投稿します。 – MacGyver

答えて

1

これは非常に簡単でした。ページのリストは、Page_Loadの後に呼び出されましたPage_Load - セッション変数が設定されていた後に呼び出されました。ページのデータリストが作成されていたコードの上に、Page_PreRenderイベントのコードを配置するだけでした。

関連する問題