在usercontrol中设置文本框文本

时间:2011-01-25 06:17:00

标签: c# asp.net user-controls

我有一个包含文本框的usercontrol。我现在想要向该用户控件添加变量,让我们将其称为Text,它将使用传入的值填充文本框。我认为这可以在用户控件后面的代码中的变量的“set”中完成。

public string Text
{
    get {}
    set
    {
        txtBox.Text = value;
    }
}

txtBox是usercontrol中文本框的ID。有谁知道如何做到这一点?

由于

修改 我怀疑的问题是我在托管用户控件的页面的Page_Load中设置文本值。我应该在哪里设置此值?

1 个答案:

答案 0 :(得分:0)

如果您的问题是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" />

使用以下技术注册用户控件将不起作用(如果所有子控件都是动态创建的,则不然。但是您不需要用户控件 - 您只需要一个派生自Control的类类):

<%-- Will not work for user controls --%>
<%@ Register Assembly="MyControlsAssembly.Shell" Namespace="MyControls" 
    TagPrefix="controls" %>

希望这会对你有所帮助。