2013-05-02 35 views
1

所以我有一個函數renderWidget()default.aspx.cs。這個想法是將一個用戶控件添加到一個頁面。從CodeBehind傳遞用戶控制變量和訪問方法

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'」的定義。我覺得這裏可能有一些非常基本的東西。

任何幫助表示感謝,謝謝!

回答

1

你必須轉換爲正確的類型:

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

LoadControl回報Control而不是實際的類型你UserControl的。

+0

'無法找到類型或命名空間名稱'WidgetControl'。'我在這裏顯然很愚蠢,顯然我缺少一個步驟。對白癡抱歉。 – 2013-05-02 16:18:49

+0

@DeclanTyson:查看UserControl的名稱空間,在頁面頂部添加正確的「using」或使用完整的名稱空間。 – 2013-05-02 16:21:34

+0

@Time Schmelter如何找到UserControl的名稱空間? – 2013-05-02 16:29:58

1

您需要將您的實例投射到WidgetControl

+0

和@Tim Schmelter一樣 - 我得到'無法找到類型或名稱空間名'WidgetControl'。我覺得我有點厚,但是我做錯了什麼? – 2013-05-02 16:19:33