如果我无法访问Page对象(比如我在实用程序类中),如何在ASP.NET中动态加载usercontrol?
通常你会这样做:
Page.LoadControl("~/controls/MyControl.ascx");
答案 0 :(得分:2)
您可以使用以下代码将实用程序类中的控件添加到当前页面:
Page currentPage = HttpContext.Current.Handler as Page;
if (currentPage != null)
{
currentPage.Controls.Add(
currentPage.LoadControl("~/controls/MyControl.ascx"));
}
它有效,但我不推荐这个,并认为它是一个黑客。
答案 1 :(得分:1)
正确加载用户控件的唯一方法(也就是说以一种启动其生命周期的方式)是将它添加到另一个控件的控件集合中。
因此,您需要传递对页面的引用或对页面上控件的引用,并将控件添加到该控件的集合中。