通常我们这样做是为了获取用户控件内的textbox的值。
<asp:TextBox runat="server" Text="Test" ID="txtTest"/>
在代码后面创建一个属性
public string MyString
{
get { return txtTest.Text; }
}
在父页面中,我们可以获取用户控件的实例并获取文本框的值,如
foreach (RepeaterItem itm in rptAttribute.Items)
{
MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName"));
string test = uc.MyString;
}
但不确定如果用户控件中的文本框以编程方式创建,则如何呈现值。
答案 0 :(得分:0)
您可以对文本框采用类似的方法,但声明一个公共方法,该方法将文本框名称作为参数,然后像这样返回:
在您的ASCX中:
public TextBox GetDynamicTextBoxByID(string textBoxId)
{
return (TextBox)Page.FindControl(textBoxId);
}
在您的父页面中:
foreach (RepeaterItem itm in rptAttribute.Items)
{
MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName"));
string test = uc.MyString;
TextBox tx = uc.GetDynamicTextBoxByID(idOfTextBox);
}
不要忘记检查是否返回null并正确处理。