c# - 如何获取自定义用户控件内的所有文本框?

标签 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
    }
}

但它并没有像我想象的那样,而且我不知道如何获取该信息。

那么,如何动态获取 ASP.net Web 表单中自定义 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;
}

获得结果后,您可以迭代它们并执行您需要执行的操作。

关于c# - 如何获取自定义用户控件内的所有文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090105/

相关文章:

linux - 如何添加将更改 Linux 中其余脚本路径的用户输入框

c# - WCF流式文件传输

c# - 在 C# 中有没有一种方法可以像在 jQuery "one"方法中那样只调用一次方法?

c# - 绝对路径返回 web 相对路径

asp.net - Hp Touchpad 浏览器 ASP.NET 认为 cookie 已禁用

.net - 从页面后面的代码调用用户控件中的函数

c# - 如何在 Web 表单上输入值并将其作为数字存储在 SQL Server 中

c# - Azure ConstraintRules 不起作用

c# - System.DateTime 客户端依赖吗?

c# - ASP.NET 用户控件中的 Javascript 函数