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 に答える