簡體   English   中英

從CodeBehind傳遞用戶控件的變量和訪問方法

[英]Pass variables and access methods of User Control from CodeBehind

所以我在default.aspx.cs中有一個函數renderWidget() 這樣做的想法是將用戶控件添加到頁面。

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'的定義”。 我覺得這里可能缺少一些非常基本的東西。

任何幫助表示贊賞,謝謝!

您需要將實例轉換為WidgetControl

您必須強制轉換為正確的類型:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM