从Code Behind传递用户控件的变量和访问方法

时间:2013-05-02 16:14:43

标签: c# asp.net

所以我在 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'的定义” 我觉得这里可能有一些非常基本的东西。

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将实例转换为WidgetControl

答案 1 :(得分:1)

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

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

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