0

通常我们这样做是为了获取用户控件内的文本框的值。

<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;
}

但不确定如果用户控件中的文本框以编程方式创建,如何呈现该值。

4

1 回答 1

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 并进行适当处理。

于 2013-04-25T08:19:59.570 回答