如果您无法访问Page,是否有办法加载用户控件?

时间:2009-01-20 20:22:50

标签: asp.net

如果我无法访问Page对象(比如我在实用程序类中),如何在ASP.NET中动态加载usercontrol?

通常你会这样做:

Page.LoadControl("~/controls/MyControl.ascx");

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码将实用程序类中的控件添加到当前页面:

Page currentPage = HttpContext.Current.Handler as Page;
if (currentPage != null)
{
    currentPage.Controls.Add(
        currentPage.LoadControl("~/controls/MyControl.ascx"));
}

它有效,但我不推荐这个,并认为它是一个黑客。

答案 1 :(得分:1)

正确加载用户控件的唯一方法(也就是说以一种启动其生命周期的方式)是将它添加到另一个控件的控件集合中。

因此,您需要传递对页面的引用或对页面上控件的引用,并将控件添加到该控件的集合中。