Подтвердить что ты не робот

Разница OnInit и OnLoad в ASP.NET?

У меня было интервью неделю назад, и один из вопросов заключался в том, что разница между OnInit и Onload в ASP.NET? Я понятия не имел, и я не нахожу простых ответов в сети, так что кто-нибудь может объяснить коротко и просто, какая разница между ними? (Я обнаружил, что разница в том, что разница в жизненном цикле).

4b9b3361

Ответ 1

Вам нужно прочитать жизненный цикл страницы ASP.NET.

OnInit происходит раньше в жизненном цикле - изменения состояния представления еще не выполнены, а отслеживание его не было включено.

Ответ 2

OnInit (событие Init) происходит после инициализации всех элементов управления, но до ViewState отслеживания включено. Он вызывает восходящий (события Init для дочерних элементов управления вызывается перед их родительским событием Init).

Init - хорошее место для добавления динамических элементов управления на вашу страницу или пользовательский контроль (хотя это не требование). Если вы можете, тогда эти элементы управления будут автоматически восстанавливать ViewState во время обратной передачи (см. Ниже). Это рискованное место для установки свойств управления, поскольку они могут быть перезаписаны входящим ViewState. Init - это правильное место для установки ViewStateUserKey, которое может помочь защитить ваш сайт от атак с одним щелчком мыши. Вы также можете вызвать RegisterRequiresControlState(), если вы используете состояние управления.

Сразу после события Init каждый элемент управления включает отслеживание ViewState, поэтому любые изменения свойств управления после этого будут отображаться в ViewState.

Следующие события на уровне страницы: InitComplete и PreLoad, ни один из которых не отображается на уровне управления. Во время обратной передачи входящий ViewState восстанавливается в элементы управления между InitComplete и PreLoad.

Затем появляется событие Load, которое происходит как для элементов управления, так и для страницы. Load вызывается сначала на родительском уровне, а затем для любых дочерних элементов управления. Главная страница ведет себя как элемент управления на странице в отношении упорядочения событий.

Ответ 3

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

лучше не обращаться к элементам управления в этом случае, потому что вам не гарантировано, что они были созданы.

Страница_Load - это хорошее место для хранения кода, в котором вы инициализируете значения и любые элементы управления, специфичные для этой страницы, потому что на данный момент вы знаете, что элементы управления существуют и доступны.

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

Ответ 4

Оба этих метода класса Control вызывают ASP.NET. OnInit() метод вызывает событие Init, а метод OnLoad() вызывает событие Load.