Использование Page_Load и Page_PreRender в ASP.Net
Я вижу, что некоторые люди используют Page_Load и Page_PreRender на той же странице aspx. Могу ли я точно узнать, почему нам нужно вызывать оба метода на одной странице asp.net?
Пожалуйста, смотрите код ниже,
protected void Page_Load(object sender, EventArgs e)
{
try
{
dprPager.ButtonClickPager += new EventHandler(dprPager_ButtonClickPager);
if (!Page.IsPostBack)
{
InitPager();
}
}
catch (Exception ex)
{
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
erMsg.Visible = !string.IsNullOrEmpty(lblError.Text);
}
Ответы
Ответ 1
Это зависит от ваших требований.
Загрузка страницы. Выполнять действия, общие для всех запросов, такие как настройка запроса к базе данных. На этом этапе серверные элементы управления в дереве создаются и инициализируются, состояние восстанавливается, а элементы управления форматом отражают данные на стороне клиента. См. Раздел Обработка перенесенных событий.
Prerender: выполнять все обновления перед визуализацией вывода. Любые изменения, внесенные в состояние управления на фазе предварительного прослушивания, могут быть сохранены, в то время как изменения, сделанные в фазе рендеринга, теряются. См. Раздел Обработка перенесенных событий.
Ссылка: Жизненный цикл управления выполнением MSDN
Попробуйте прочитать о
Обзор жизненного цикла ASP.NET ASP.NET
Жизненный цикл выполнения управления
Привет
Ответ 2
Основное различие между Page_Load
и Page_PreRender
заключается в том, что в методе Page_Load не все элементы управления вашей страницей полностью инициализированы (загружены), поскольку отдельные методы управления Load()
еще не были вызваны. Это означает, что дерево еще не готово к показу. В Page_PreRender
вы гарантировали, что все элементы управления страницей загружены и готовы к рендерингу. Технически Page_PreRender
- это ваш последний шанс настроить страницу до того, как она превратится в поток HTML.
Ответ 3
Page_Load происходит после того, как ViewState и PostData отправляются во все элементы управления на стороне сервера с помощью элементов управления ASP.NET, созданных на странице. Page_Init - это событие, запущенное до восстановления ViewState и PostData. Page_Load - это место, где вы обычно выполняете инициализацию на любой странице. Page_PreRender - это последнее событие, с которым вы можете обращаться до того, как состояние страницы будет отображаться в HTML. Page_Load
является более типичным событием для работы.
Ответ 4
Ну, большое требование для реализации PreRender в отличие от Load - это необходимость работать с элементами управления на странице. В Page_Load элементы управления не отображаются, и поэтому не могут быть указаны.
Ответ 5
Обработка веб-формы ASP.NET происходит поэтапно. В каждом состоянии поднимаются различные events
. Если вам интересно подключить свой код к processing flow
(на стороне сервера), вам необходимо обработать соответствующее событие страницы.
Ответ 6
Основная точка различий, как указано в @BizApps, заключается в том, что событие "Загрузить" происходит сразу после заполнения ViewState, в то время как событие PreRender происходит позже, прямо перед стадией рендеринга и после того, как все отдельные обработчики событий для отдельных дочерних элементов уже выполняются.
Поэтому любые изменения, выполняемые обработчиком событий действий элементов управления, должны обновляться в иерархии управления во время PreRender, как это происходит после.