我有一个包含文本框的usercontrol。我现在想要向该用户控件添加变量,让我们将其称为Text,它将使用传入的值填充文本框。我认为这可以在用户控件后面的代码中的变量的“set”中完成。
public string Text
{
get {}
set
{
txtBox.Text = value;
}
}
txtBox是usercontrol中文本框的ID。有谁知道如何做到这一点?
由于
修改 我怀疑的问题是我在托管用户控件的页面的Page_Load中设置文本值。我应该在哪里设置此值?
答案 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" %>
希望这会对你有所帮助。