1

したがってrenderWidget()default.aspx.csに関数があります。これのアイデアは、ユーザー コントロールをページに追加することです。

public void renderWidget(string data) {
    Control ctrl = Page.LoadControl("/widgets/widget.ascx");
    dataPanel.Controls.Add(ctrl);
}

これはすべてうまくいきます。もう一方のユーザー コントロールでは、widget.ascx.csに次のコードがあります。

public class WidgetControl : System.Web.UI.UserControl
{
    public string testString = "";
    public void test() {
        Response.Write("test");
    }

}

ユーザー コントロールのいずれかのプロパティにアクセスしようとすると、問題が発生します。ctrl.test()またはctrl.testString = "test"default.aspx.csに追加しようとすると、 "'System.Web.UI.Control' には 'test' の定義が含まれていません" というエラーが表示されます。ここに欠けている非常に基本的なものがおそらくあるように感じます。

どんな助けでも感謝します、ありがとう!

4

2 に答える 2

1

正しい型にキャストする必要があります。

WidgetControl widget = (WidgetControl)ctrl;
widget.testString = "Foo";
widget.test();

LoadControlControlの実際のタイプではなく、 を返しますUserControl

于 2013-05-02T16:16:46.050 に答える
1

インスタンスを にキャストする必要がありますWidgetControl

于 2013-05-02T16:16:05.700 に答える