Когда страница использует главную страницу, инициализируются элементы управления, созданные во время разработки…?

http://www.allinterview.com/showanswers/73327.html


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

б) Предполагая, что наша страница связана с главной страницей и также использует тему -> файлы скинов также применяются во время события Init, поэтому я предполагаю, что во время события Init Asp.Net сначала инициализирует элементы управления их декларативными значениями и только затем применяет скин им правила?

c) Но если страница не использует главную страницу, то элементам управления, которые она объявляет во время разработки, присваиваются значения до события Init?


спасибо


person carewithl    schedule 14.01.2010    source источник


Ответы (1)


Вот лучшая статья об этом на MSDN. Прокрутите вниз до События жизненного цикла.

Если я правильно понимаю ваши вопросы, все, что вы задаете в пунктах a, b и c, происходит во время Pre_Init. Событие Init запускается после инициализации всех элементов управления во время Pre_Init. Итак, во время инициализации вы теперь можете читать или инициализировать свойства этих элементов управления.

Обратите внимание, что вы все еще инициализируете свойство элемента управления во время инициализации.

Пример...

<asp:Label ID="Label1" runat="server" CssClass="someclass"></asp:Label>

Init:
Label1.CssClass = "someotherclass";

Поправьте меня, если я ошибаюсь, ребята ...

Я считаю, что Label1 инициализируется с помощью CssClass, установленного на someclass во время Pre_Init, а затем CssClass Label1 повторно инициализируется (начальное значение изменяется) на someotherclass. Поэтому, когда страница загружена, значение класса будет другим классом.

И попытка получить доступ к Label1.CssClass в блоке Pre_Init не сработает, поскольку Label1 еще не инициализирован. У вас есть доступ к свойствам элемента управления из Init.

Этот порядок инициализации не меняется независимо от того, есть у вас MasterPage или нет. Считайте MasterPage просто еще одним элементом управления. Я считаю, что все элементы управления внутри MasterPage также инициализируются во время Pre_Init.

Надеюсь, это ясно.

person Brian Kim    schedule 14.01.2010
comment
Этот порядок инициализации не меняется независимо от того, есть у вас MasterPage или нет. Считайте MasterPage просто еще одним элементом управления. Но если я не ошибаюсь, элементы управления нужно сначала поместить в дерево элементов управления, прежде чем им можно будет присвоить декларативные значения? А когда со страницей связана главная страница, разве элементы управления страницы не помещаются в дерево элементов управления только во время Pre_Init или, возможно, даже во время события Init? Тогда, если это так, то разве этим элементам управления не могут быть присвоены декларативные значения во время события Init? - person carewithl; 18.01.2010