какой код мы могли бы написать только в событии Page PreRender?


Я гуглю о Page_preRender, что как мы можем использовать Page_PreRender вместо page_Load или что может быть сценарий, в котором мы не могли бы использовать 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 мы можем создавать элементы управления динамически, изменять или назначать MasterPage или тему, которую мы не удалось в page_Load или после Init.

Но как насчет Page_PreRender какие вещи мы можем делать только в Page_PreRender.

3 2

3 ответа:

Определенные события запускаются после события Page_Load. Некоторые из них кажутся очевидными, а другие-нет. Это происходит потому, что эти события могут выполняться только после восстановления (или, скорее, после загрузки). Например, если вы хотите зарегистрировать часть клиентского скрипта, хорошим местом может быть Page_Render. Или страница.метод validate, который вы можете целенаправленно вызвать в Page_Load для проверки элементов управления, может быть уже вызван на этапах визуализации.

Точно так же некоторые другие, которые только работают, когда связанные с ними элементы управления готовы к визуализации (полностью обработаны для браузера пользователя).

Это не вопрос того, что вы можете только делать в Page_PreRender, могут быть зависимости между вашими элементами управления, которые становятся очевидными только после обработки всех событий в Page_Load.

Событие Page_PreRender можно использовать для указания изменений в HTML-рендеринге для элементов управления. одно важное различие между Load и PreRender заключается в том, что Load запускается до запуска событий управления, а PreRender вызывается после событий управления. Итак, если на основе кода управляющих событий вы хотите изменить выходной html, вы можете сделать это в событии PreRender.

Еще одна важная вещь, которую следует отметить, заключается в том, что объект Page вызывает событие PreRender на странице объект, а затем рекурсивно делает то же самое для каждого дочернего элемента управления. Предварительное событие отдельных элементов управления происходит после предварительного события страницы. Таким образом, это дает вам дополнительные рычаги влияния на изменение визуализации конкретного элемента управления. В Page_Load это невозможно.

Он также может быть использован, если вы используете пользовательские / пользовательские элементы управления, где визуализация элемента управления выполняется вами.