Веб-формы UserControls - LoadControl в pre-init или page_load? - PullRequest
2 голосов
/ 11 декабря 2011

В справочнике по жизненному циклу MSDN указано, что предварительный запуск используется для «Создания или повторного создания динамических элементов управления».

Однако в другом месте MSDN , пример подразумевает, что динамический пользовательский элемент управления должен быть загружен в Page_Load

Это противоречие? Или pre-init используется только для стандартных элементов управления aspx?

Что я пропустил:)

Изменить: В любом случае, однако, один подход имеет преимущество над другим.

(WebUserControl1 - это UserControl с простым свойством метки, SomeProperty )

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    WebUserControl1 wc1 = LoadControl(@"~\WebUserControl1.ascx") as WebUserControl1;
    wc1.SomeProperty = "Hello World";
    Controls.Add(wc1);
}

protected void Page_Load(object sender, EventArgs e)
{
    WebUserControl1 wc1 = LoadControl(@"~\WebUserControl1.ascx") as WebUserControl1;
    wc1.SomeProperty = "Hello World";
    Controls.Add(wc1);
}

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

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

1 голос
/ 12 декабря 2011

Что именно вы пытаетесь сделать?Вы пытаетесь передать информацию в пользовательский элемент управления?В этом случае вы можете передать информацию пользовательскому элементу управления в событии page_load с родительской страницы.

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