如何将数据字符串传递给C#中以编程方式加载的自定义用户控件

时间:2008-12-03 07:59:59

标签: c# controls pass-data

我编写了一个自定义用户控件,它返回一些用户特定的数据。 要加载自定义用户控件,请使用以下代码行:

UserControl myUC = (UserControl).Load("~/customUserControl.ascx");

但是如何在用户控件string user中访问myUC

4 个答案:

答案 0 :(得分:1)

假设您的自定义用户控件的名称是“MyUserControl”

试试这段代码:

MyUserControl myUC = (UserControl).Load("~/customUserControl.ascx") as MyUserControl;
string result = myUC.user;

答案 1 :(得分:1)

让我们称你的用户控制“Bob”

如果你继承Bob中的UserControl,那么我想这样做是安全的:

Bob b = (Bob).Load("~/customUserControl.ascx");

对于用户部分,我无法真正按照您的要求进行操作,类中的“用户”是您创建“Bob”用户控件还是要在“Bob”用户控件中设置属性或是相反吗?

对于第一个,您应该在usercontrol中创建一个属性。

class Bob : UserControl{
public string User { get; set;}
}

然后在创建“Bob”实例后设置它。

b.User = theuser;

答案 2 :(得分:0)

您需要将加载的控件强制转换为实际类型并使用其公共属性:

MyUserControl myUCTyped = (MyUserControl)myUC;
myUCTyped.ThePublicProperty = "some value";

答案 3 :(得分:0)

到目前为止,谢谢。我的代码与上面的代码完全相同:

public partial class todo : System.Web.UI.UserControl
{
    private string mysecondteststring;
    public string setValue
    {
        get
        {
            return mysecondteststring;
        }
        set
        {
            mysecondteststring = value;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // my code
    }
}

但是我无法在我的Web服务代码中创建一个轮询实例。我忘了什么吗?

- >忘记将Reference添加到动态加载用户控件的.aspx页面。它正在使用普通的.aspx页面。 可以找到示例代码here

您是否有人知道如何在Web服务中添加用户控件,因为参考属性在那里不可用?