какой код мы могли бы написать только в событии Page_PreRender? - PullRequest
2 голосов
/ 15 сентября 2010

Я гуглю о 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 или Theme, которые мы не могли бы использовать в page_Load или после Init.

Но как насчет Page_PreRender, что мы можем сделать только в Page_PreRender?

Ответы [ 3 ]

0 голосов
/ 15 сентября 2010

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

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

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

0 голосов
/ 15 сентября 2010

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

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

0 голосов
/ 15 сентября 2010

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

...