所以我在 default.aspx.cs 中有一个函数renderWidget()
。这样做的想法是向页面添加用户控件。
public void renderWidget(string data) {
Control ctrl = Page.LoadControl("/widgets/widget.ascx");
dataPanel.Controls.Add(ctrl);
}
这一切都很好,很可爱。现在在另一端,在User Control,我在 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'的定义” 我觉得这里可能有一些非常基本的东西。
感谢任何帮助,谢谢!
答案 0 :(得分:1)
您需要将实例转换为WidgetControl
。
答案 1 :(得分:1)
你必须转换为正确的类型:
WidgetControl widget = (WidgetControl)ctrl;
widget.testString = "Foo";
widget.test();
LoadControl
会返回Control
而不是UserControl
的实际类型。