我有一个声明了占位符控件的 ASPX 页面。
在代码隐藏中,我创建了一个我拥有的 UserControl 并将其添加到占位符。
protected void Page_Load(object sender, EventArgs e)
{
UserControl uc = new ChartUserControl();
myForm.Controls.Add(uc);
}
UserControl 反过来有一个占位符,但在 Page_Load (对于 UserControl)中,当我这样做时:
protected void Page_Load(object sender, EventArgs e)
{
WebControl x = new WebControl();
userControlPlaceholder.Controls.Add(x);
}
它给了我无处不在的“对象引用未设置为对象的实例”异常。
我曾尝试通过调用构造函数来强制实例化,但这让我陷入了其他麻烦。任何帮助,将不胜感激。
最佳答案
我自己只花了 4 个小时。
问题是您正在创建用户控件
ChartUserControl chart = new ChartUserControl();
但你必须使用 LoadControl:
ChartUserControl chart =
(ChartUserControl)LoadControl("~/path/to/control/ChartUserControl.ascx");
显然,LoadControl 初始化用户控件,以便它的 PlaceHolders(我假设它包含的其他控件)在您使用它们时不会为空。