Page_PreRender イベントのみに記述できるコードはどのようなものでしょうか?

StackOverflow https://stackoverflow.com/questions/3717554

質問

Page_preRender についてグーグルで、page_Load ではなく Page_PreRender を使用するにはどうすればよいか、または page_Load が使用できずに Page_PreRender を使用しなければならないシナリオは何なのかを調べましたが、どこでもそれを見つけました。

"The point at which the objects are prerendered is the last time changes to the objects can be saved or persisted to viewstate. This makes the PreRender step a good place to make final modifications, such as changing properties of controls or changing Control Tree structure, without having to worry about ASP.NET making changes to objects based off of database calls or viewstate updates. After the PreRender phase those changes to objects are locked in and can no longer be saved to the page viewstate. The PreRender step can be overridden using OnPreRender".

しかし、どのような変更が page_Load では実行できず、PreRender で実行する必要があるのか​​理解できませんでした。

Page_PreInit ではコントロールを動的に作成したり、page_Load や Init 後にできなかった MasterPage やテーマを変更または割り当てたりできることはわかっています。

しかし、Page_PreRender では、Page_PreRender でしかできないことは何でしょうか。

役に立ちましたか?

解決

特定のイベントは、page_loadイベントの後にトリガーされます。いくつかは明らかですが、他の人はそうではありません。これは、これらのイベントがレクリエーション後にのみ実行できるためです(またはロード後)。たとえば、クライアントスクリプトの一部を登録したい場合、良い場所はpage_renderになる可能性があります。または、Page.validateメソッドを意図的にpage_loadで呼び出してコントロールを検証することは、レンダリング段階で既に呼び出されていると理解できます。

同様に、関連するコントロールをレンダリングする準備ができている場合にのみ機能する特定の他の特定のもの(ユーザーのブラウザのために完全に扱われます)。

他のヒント

何ができるかの問題ではない のみ Page_PreRender で実行する場合、コントロール間には Page_Load ですべてのイベントが処理された後でのみ明らかになる依存関係がある可能性があります。

Page_Prerenderイベントを使用して、コントロール用のHTMLレンダリングの変更を指定できます。 負荷とプレレンダーの重要な違いの1つは、コントロールイベントが発射され、コントロールイベントの後にプレレンダーが呼び出される前に負荷が実行されることです。 したがって、コントロールイベントコードに基づいて出力HTMLを変更する場合は、プレレンダーイベントでこれを行うことができます。

注意すべきもう1つの重要なことは、ページオブジェクトがページオブジェクトのプレレンダーイベントを上げ、それから子どものコントロールごとに再帰的に同じことを行うことです。個々のコントロールのプレレンダーイベントは、ページのプレレンダーイベントの後に発生します。したがって、これにより、特定のコントロールのレンダリングを変更する方法に関するレバレッジが追加されます。これはpage_loadでは不可能です。

また、コントロールのレンダリングが行われているカスタム/ユーザーコントロールを使用している場合にも使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top