我正在ASP.net中创建一个WebUserControl,希望以后能够访问该控件的元素。但是,当我访问它们时,我会尝试一起访问它们。例如,向控件添加一个CheckBox和一个表,然后查找该CheckBox,检查它是否已被标记,如果已标记,则从TextBoxes中获取这些值。
我目前已经从自定义控件中加载了页面上的所有内容,但是当迭代页面上的控件时,似乎没有我的WebUserControl类型的控件。所有控件都在页面上,但它们作为单独的ASP.net控件存在。
我是不是想错了?有没有更好的方法来做这件事?
我不确定这是不是解释得很好,请随时提出澄清的问题。
发布于 2010-03-03 09:04:14
您需要通过创建公共属性或函数来公开用户控件的功能,以使其按照您的需要或行为方式执行您需要的操作。例如,在你的例子中,你可以在你的用户控件中有一个属性,比如(你也可以做一个函数):
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;关键是在你的用户控件中公开你想要的东西,这样无论什么人在使用它,都不需要知道它的细节或实现。您应该能够像使用任何其他控件一样使用它。
https://stackoverflow.com/questions/2367957
复制相似问题