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");
    }

}

当我尝试访问用户控件中的任何一个属性时,就会出现问题。当我尝试向default.aspx.cs添加ctrl.test()或添加时,我收到错误“'System.Web.UI.Control' 不包含 'test' 的定义”。我觉得这里可能缺少一些非常基本的东西。ctrl.testString = "test"

任何帮助表示赞赏,谢谢!

4

2 回答 2

1

您需要将您的实例转换为WidgetControl.

于 2013-05-02T16:16:05.700 回答
1

您必须转换为正确的类型:

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

LoadControl返回Control而不是您的实际类型UserControl

于 2013-05-02T16:16:46.050 回答