1

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

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

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

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

当我在我的 default.aspx 中以声明方式创建它时<uc:WebControl runat="server" id=wc1" />,这个 ABCmethod 不会引发任何异常。

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

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

这会引发错误。说 abc 是未设置为对象实例的对象引用。

4

1 回答 1

1

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

更具体地说,您需要以下代码:

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

您还需要将控件添加到占位符控件,否则控件将不可见。

于 2013-09-08T17:00:41.303 回答