Joe*_*ack 2 c# asp.net user-controls
我需要一种在服务器端ASP.net WebForms中动态收集自定义UserContorl内的所有TextBox的方法
我认为这可以工作:
foreach (var control in Page.Controls)
{
var textBox = control as TextBox;
if (textBox != null && textBox.MaxLength > 0)
{
// stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
但是它并没有达到我的预期,并且我也看不到如何获得这些信息。
因此,如何在ASP.net Webforms中动态获取自定义UserControl的服务器端的所有文本框?
您需要一种递归方法,因为并非所有1级子级都必须是文本框(取决于用户控件中的控件/容器层次结构):
private IEnumerable<TextBox> FindControls(ControlCollection controls)
{
List<TextBox> results = new List<TextBox>();
foreach(var control in controls)
{
var textBox = control as TextBox;
if (textBox != null && textBox.MaxLength > 0)
{
results.Add(textBox);
}
else if(textBox == null)
{
results.AddRange(FindControls(control.Controls));
}
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
获得结果后,您可以迭代它们并执行所需的任何操作。
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |