C# 在usercontrol from页中设置文本框文本

C# 在usercontrol from页中设置文本框文本,c#,asp.net,user-controls,C#,Asp.net,User Controls,我有一个usercontrol,其中包含一个文本框。现在我想将变量添加到该用户控件中,我们称之为Text,它将用传入的值填充文本框。我认为这可以在用户控件的代码隐藏中的变量集中完成 public string Text { get {} set { txtBox.Text = value; } } txtBox是usercontrol中文本框的ID。有人知道如何做到这一点吗 谢谢 编辑 我怀疑的问题是,我正在设置承载用户控件的页面的页面加载中的文

我有一个usercontrol,其中包含一个文本框。现在我想将变量添加到该用户控件中,我们称之为Text,它将用传入的值填充文本框。我认为这可以在用户控件的代码隐藏中的变量集中完成

public string Text
{
    get {}
    set
    {
        txtBox.Text = value;
    }
}
txtBox是usercontrol中文本框的ID。有人知道如何做到这一点吗

谢谢

编辑 我怀疑的问题是,我正在设置承载用户控件的页面的页面加载中的文本值。我应该在哪里设置此值

如果您的问题是txtBox为空,那么我可以建议您:

如果要动态创建用户控件,请不要忘记在隐式或显式访问其子控件之前将其添加到页面的控件树中。否则,所有这些子控件将保持未初始化状态:

MyUserControl ctrl = (MyUserControl )Page.LoadControl("~/MyUserControl.ascx");
base.Controls.Add(ctrl);

ctrl.Text = "some value";
如果在页面的标记中声明了用户控件,则不要忘记使用register指令注册,并将Src属性设置为用户控件的位置:

<%@ Register TagPrefix="controls" TagName="MyUserControl" 
    Src="~/MyUserControl.ascx" %>

<controls:MyUserControl id="ctrl1" Text="some value" runat="server" />
如果所有子控件都是动态创建的,则使用以下技术注册用户控件将不起作用。但是,您不需要用户控件-您只需要从该类派生的类:


希望这对您有所帮助。

不,不是。我一辈子都搞不懂为什么。事件将我的usercontrol剥离为一个文本框,但仍然一无所获。此属性的getter中实际包含什么?我用textbox创建了一个简单的用户控件,正如你所说的一样,并把你发布的代码放在get中返回textbox值,在page_load中分配值,效果很好。为什么不试试简单的web应用程序和带有文本框的简单用户控件呢?我希望你的页面/控件启用了viewstate。请发布页面html的代码
<%-- Will not work for user controls --%>
<%@ Register Assembly="MyControlsAssembly.Shell" Namespace="MyControls" 
    TagPrefix="controls" %>