2

私は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またはThemeを変更または割り当てることができます。

しかし、Page_PreRenderについては、Page_PreRenderでのみ実行できることは何ですか。

4

3 に答える 3

0

Page_PreRender でしかできないことの問題ではありません。すべてのイベントが Page_Load で処理された後にのみ明らかになるコントロール間の依存関係があるかもしれません。

于 2010-09-15T12:33:31.743 に答える
0

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

注意すべきもう 1 つの重要な点は、Page オブジェクトが Page オブジェクトで PreRender イベントを発生させ、その後、各子コントロールに対して同じことを再帰的に行うことです。個々のコントロールの PreRender イベントは、ページの PreRender イベントの後に発生します。したがって、これにより、特定のコントロールのレンダリングを変更する方法をさらに活用できます。これは Page_Load では不可能です。

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

于 2010-09-15T12:40:45.230 に答える
0

Page_Load イベントの後に特定のイベントがトリガーされます。明らかなものもあれば、そうでないものもあります。これは、これらのイベントが再作成後 (またはロード後) にしか実行できないためです。たとえば、クライアント スクリプトの一部を登録する場合、適切な場所は Page_Render です。または、コントロールを検証するために Page_Load で意図的に呼び出すことができる Page.validate メソッドは、レンダリング段階で既に呼び出されていると理解できます。

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

于 2010-09-15T13:01:41.780 に答える