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

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


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

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

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


* 1016 спасибо *

1 Ответ

1 голос
/ 14 января 2010

Вот лучшая статья об этом на 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, а затем CelClass класса Label1 повторно инициализируется (первоначальное значение изменяется) на «someotherclass». Поэтому, когда страница загружена, значением класса будет «someotherclass».

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

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

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

...