Web 用户控件在以编程方式创建时引发错误

本文关键字:创建 错误 方式 编程 用户 控件 Web | 更新日期: 2023-09-27 18:30:39

我有一个用户控件。webcontrol.ascx

<div runat="server" id="abc"></div>

在webcontrol.ascx.cs中,我有一个添加类名的方法

public void ABCmethod(){ abc.Attributes["class"] = "className" };

当我以默认方式创建它时.aspx以声明方式<uc:WebControl runat="server" id=wc1" />,此 ABC方法不会引发任何异常。

但是当我以编程方式创建它时,

protected void Page_Load(object sender, EventArgs e)
    {
        WebControl wc1 = new WebControl();
        wc1.ABCmethod();
    }

这将引发错误。说 abc 是一个对象引用,而不是设置为对象的实例。

Web 用户控件在以编程方式创建时引发错误

我认为您需要使用此处示例中的LoadControl方法

更具体地说,您需要类似以下代码的内容:

protected void Page_Load(object sender, EventArgs e)
{
    WebControl myControl = (WebControl)LoadControl("~/Controls/webControl");
    myControl.ABCMethod();
}
还需要将控件

添加到占位符控件,否则该控件将不可见。