Web表单UserControls - 在pre-init或page_load中的LoadControl?

时间:2011-12-11 16:29:05

标签: asp.net user-controls webforms page-lifecycle

MSDN page lifecycle reference中,它声明pre-init用于“创建或重新创建动态控件。”

但是,elsewhere on 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 个答案:

答案 0 :(得分:1)

你到底想要做什么?您是否尝试将信息传递给用户控件?如果是这样,您可以将信息从父页面传递给page_load事件中的用户控件。

答案 1 :(得分:1)

自定义控件的答案取决于。如果你的用户控件在page_load之前不需要任何操作,那么你可以继续在页面加载期间添加你的控件,如果你的用户控件中的代码在较早的时间执行,那么你应该在MSDN文章建议的早期阶段。