1

asp.net webforms ページ/コントロールのライフサイクル中に発生したイベントを確認する方法はありますか?

各イベントのハンドラーを手動で追加できることはわかっていますが、それは少し...非効率的です。

これらのイベントが発生したかどうかを確認できるビジュアライザーまたはプロパティはありますか?

編集 これを知りたい理由は、カスタム コントロールの ViewState プロパティをオーバーライドしていて、viewstate がある時点で消えてしまい、ページのライフサイクルのどの時点でオーバーライドされているかを知りたいからです。

4

3 に答える 3

0

.NETでイベントが機能する方法は、イベントに関心があることを登録することです。イベントが発生すると、フレームワークがハンドラーを呼び出します。私は、あなたがどこにいるのかを知る以外に、あなたがライフサイクルのどこにいるのかを教えてくれるビジュアライザーやプロパティを知りません。

MSDNでは、ASP.NETページのライフサイクルの概要に、いつ何が起こるかについてのかなり良い説明があります。ページまたはコントロールで行うすべてのことは、これらのイベントの1つのハンドラーの一部として行われるため、作業できるはずです。プロセスのどこにいるのか。


編集して追加

SaveStateCompleteイベントは、すべてのコントロールなどが詳細をViewStateに保存し終えると発生します。これは、おそらくコードが移動する場所です。

コントロールは、その時点までViewStateに変更を加えることができます。通常、変更はPreRenderイベント(SaveStateCompleteの直前に発生します)で行われます。

どんな変更をしていますか?

于 2009-12-28T23:08:35.457 に答える
0

もう一度、私は自分自身の質問に答えています。

私がやりたかったのは、ページのライフサイクルで発生したイベントを特定することでした。

これは実際には非常に簡単です。web.config でトレースを有効にしてから、~/Trace.axd に移動して何が起動したかを確認します。

于 2010-05-04T10:09:50.340 に答える
0

ページ イベントとコントロール イベントは、非常に厳密で予測可能な方法で発生します。Page とすべてのコントロールは、次のイベントに移る前に 1 つのイベントを処理します。そのため、コードを Page に配置すると、関連するすべてのコントロールで何が起こったかを正確に知ることができます。

ただし、ViewState を直接オーバーライドするのは安全ではありません。コントロールはそれに依存します。代わりに、オーバーライドSavePageStateToPersistenceMedium()LoadPageStateFromPersistenceMedium()ページを参照してください。これにより、ViewState の最終的な配置を細かく制御できます。

それが役立つ場合は、これらのメソッドとその他の関連する最適化について、私の著書Ultra-Fast ASP.NET で取り上げます

于 2009-12-29T13:25:31.547 に答える