2013-03-04 2 views
5

別のページに行くときに実行されるイベントは何ですか?アンロードですか?Asp.netのデストラクタ

Protected Sub Edit_Unload(sender As Object, e As EventArgs) Handles Me.Unload 

End Sub 
+6

イベントが実行されるという保証はありません。 –

+0

また、「デストラクタ」の場合、ページインスタンスの_ファイナライザ_は、ユーザーがページを見る前に実行されることがよくあります。ページインスタンスは、1つのhttp要求の存続期間中だけ持続することに注意してください。同じセッション内の同じページのポストバックさえ、異なるインスタンスによって処理されます。ページインスタンスは、ページライフサイクルを実行して、ブラウザに送信されるhtmlを生成します。このhtmlが準備と送信されると、GCによってページインスタンスを収集できます。ブラウザーがディスプレイへの応答をレンダリングすることさえできる前に、これが起こることがあります。 –

+2

別のページへの移動は、サーバー側ではなくクライアント側で行われます。ブラウザーでページが表示されると、サーバーはもはや関与しなくなります。 'LinkBut​​ton'のようなサーバーサイドのリンクを使わない限り、あるページから別のページへのナビゲートに関連するサーバー側のイベントはありません。それでも、ブラウザに別のURLを入力し、サーバーのリダイレクトをバイパスするだけでは、ユーザーを制御することはできません。 – mellamokb

答えて

3

UnloadASP.NET Page Lifecycleで最後のイベントです。 docsから

:各コントロールのために、その後、ページに対して発生し

。コントロールでは、 イベントを使用して、コントロール固有のデータベース接続を閉じるなど、特定のコントロールの最終的なクリーンアップを実行します。ページ自体については、このファイル を使用して、開いているファイルを閉じたり、データベース接続を にしたり、ログやその他の特定のタスクを終了するなどの最終的なクリーンアップ作業を行います。

ただし、別のページにリダイレクトすると、このメソッドが呼び出されないことがあります。

+0

これは他のページに移動するためには何が関係していますか? – mellamokb

+0

@mellamokbtheWiseああ、私は間違っているようです。私は答えを編集します。 –

3

Unloadは、要求の最後に発生します。*。他のページに移動することとは関係ありません。ページは、1回の要求の全過程で「ロード」および「アンロード」されます。そうでないと思われる唯一の理由は、Webフォームの機能が舞台裏で行う魔法です。

これが新しいロードかポストバックかを確認したい場合は、PageクラスにIsPostBackプロパティがあります。このプロパティは、ページ内の何かがその同じページへのポストバックをトリガするときにtrueになります。それが偽であれば、これは新しい要求であり、適切に扱われるべきです。

他にも、セッションで最後に訪れたページを追跡する以外に、誰かが別のページに移動したとき(現在のページを最新表示するのではなく)に通知する方法はわかりません。

*(ページのライフサイクルの最後のイベントとして定義されていますが、要求は何らかの理由で途中で終了された場合に発生しない場合があります。リダイレクトと転送が主な例である。)

1

このリンクであってもよいですあなたへの使用:Page Life Cycle Overview。実行中のイベントに頼ることはできませんが、実行する順序(および実行時)を示す良いガイドです。

0

ページが離れるときにイベントをキャプチャする場合は、javascriptを使用してサーバーメソッドを呼び出すことができます。これは動作しますが、サーバーコードでプロセスを停止することはできません。

preventing page from being redirected

はそれで、私はページを残して、それが起こる前に、サーバーのメソッドを呼び出ししようとしている検出するために、JavaScriptを使用する方法の例を掲載します。私は始めた私の最後のスレッドをチェックしてください。