如何使用for循环扫描ASP.net中页面中的所有控件?

Jo0*_*0o0 0 c# asp.net

如何使用for循环扫描ASP.net中页面中的所有控件?

因为我想在一个for循环中验证所有文本框的文本

小智 5

最简单的解决方案是将Validators添加到文本框(即RequiredFieldValidator).它们允许您指定自定义错误消息,只需在后面的代码中调用Page.Validate()即可进行检查.

如果这不是一个选项,ASP.Net控件嵌套在一个层次结构中,因此您需要使用一些递归来获取页面上的每个文本框.以下函数代码循环遍历页面上的所有控件集合,并在文本框为空时附加错误消息.

protected void buttonClick(object sender, EventArgs e)
{
    List<String> errors = new List<String>();
    ValidateTextboxes(errors, this.Controls);
    if (errors.Count > 0)
    {
        // Validation failed
    }
}

protected void ValidateTextboxes(List<String> errors, ControlCollection controls)
{
    foreach (Control control in controls)
    {
        if (control is TextBox)
        {
            // Validate
            TextBox tb = control as TextBox;
            if (tb.Text.Length == 0)
                errors.Add(tb.ID + ": field is required:");
        }

        if (control.Controls.Count > 0)
            ValidateTextboxes(errors, control.Controls);
    }
}
Run Code Online (Sandbox Code Playgroud)