Цель различного порядка выполнения: Init () и Load () - PullRequest
4 голосов
/ 17 января 2011

Во время недавнего интервью был задан следующий вопрос.

• A Master page which contains 
   • An ASPX web form page which contains 
      • A Web User Control inside the page which contains 
         • A button to fire some code in a button_click event

Событие Инициирования сработает (от Внутреннего Моста до Внешнего Моста)

aspx.page Begin Init
   –> Inside user control Page_Init 
   –> Inside master page Page_Init
   –> Inside lifecycle page Page_Init 
aspx.page End Init

и событие загрузки будет запускаться

aspx.page Begin Load
  –> Inside lifecycle page Page_Load
  –> Inside master page Page_Load
  –> Inside user control Page_Load 
aspx.page End Load

Почему ASP.NET Framework поддерживает разные порядки выполнения в Load() и Init(). Этот вопрос задавался в интервью. Я понятия не имею, что интервьюер ожидает от меня.

Прошу вашей помощи, пожалуйста.

Ответы [ 2 ]

10 голосов
/ 17 января 2011

Предлагаю прочитать о жизненном цикле ASP.NET .

У этих двух целей разные, следовательно, разные порядки выполнения.

Инициализация:

Во время инициализации страницы элементы управления на странице доступны, и для каждого элемента управления установлено свойство UniqueID.Главная страница и темы также применяются к странице, если это применимо.Если текущий запрос является обратной передачей, данные обратной передачи еще не были загружены и значения свойств элемента управления не были восстановлены до значений из состояния просмотра.

Загрузка:

Во время загрузки, если текущий запрос является обратной передачей, свойства элемента управления загружаются с информацией, восстановленной из состояния просмотра и состояния элемента управления.

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


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

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

1 голос
/ 15 января 2013

Причина в управлении контролем.Иногда вам нужно динамически создавать элементы управления, и чтобы они работали правильно, вам нужно заново создать их в init, а не в onload ().Если вы не создадите заново элементы управления onInit, ваши динамические элементы управления не будут работать должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...