我正在ASP.net中创建一个WebUserControl,并希望以后能够访问该控件的元素。当我访问它们虽然我试图一起访问它们。例如,将CheckBox和表添加到控件然后找到CheckBox,检查它是否已被勾选以及是否已经勾选,从TextBox中获取值。
我目前从自定义控件中加载了页面上的所有内容,但是当遍历页面上的控件时,似乎没有控制我的WebUserControl类型。所有控件都在页面上,但它们作为单独的ASP.net控件存在。
我在想这个错吗?有更好的方法吗?
我不确定这个解释得很好,请随时提出澄清问题。
答案 0 :(得分:2)
您需要通过创建公共属性或函数来公开用户控件功能,以使其按照您的需要执行操作。因此,例如在您的情况下,您可以在用户控件中拥有一个属性,例如(您也可以执行一项功能):
public List<string> SomeValues
{
get
{
// return null if checkbox is not checked, you could just as easily return an empty list.
List<string> lst = null;
if (yourCheckBox.Checked)
{
lst = new List<string>();
// You could have something that iterates and find your controls, remember you
// are running this within your user control so you can access all it's controls.
lst.Add(yourTextBox1.Text);
lst.Add(yourTextBox2.Text);
lst.Add(yourTextBox3.Text);
// etc...
}
return lst;
}
}
然后在您的页面中,您可以访问您的用户控件并调用此属性以获取值:
// assuming you defined your usercontrol with the 'yourUserControl' ID
List<string> lst = yourUserControl.SomeValues;
关键是在您的用户控件中公开您想要的内容,因此无论使用什么,都不需要了解它的详细信息或实现。您应该可以像使用任何其他控件一样使用它。