从服务器端动态加载用户控件

时间:2012-09-01 07:12:33

标签: asp.net

我有一个继承类的用户控件。 (我在这个类的Oninit函数上做了一些编码)。我使用以下方法从服务器端动态加载该用户控件:

Mycontrol dc = (Mycontrol)Page.LoadControl("/Controls/Mycontrol.ascx");
 MyPlaceHolder.Controls.Add(dc);

但问题是,由此导致用户控件继承的类的Oninit函数尚未执行。任何人都可以告诉我为什么会这样,以及解决方案是什么。

谢谢,

1 个答案:

答案 0 :(得分:0)

根据页面生命周期事件的MSDN reference,在OnInit页面之前调用OnInit个子控件。

这意味着您必须在PreInit事件中添加动态控件,才能在事件链启动之前将它们放置到位。事实上,PreInit的文档指出:

将此事件用于以下事项:

  • 检查IsPostBack属性以确定这是否是第一个 正在处理页面的时间。 IsCallback和 此时也设置了IsCrossPagePostBack属性。

  • 创建或重新创建动态控件。

  • 动态设置母版页。

  • 动态设置Theme属性。

  • 读取或设置个人资料属性 值。