gpt4 book ai didi

asp.net - 使用linq获取网页中某种类型的Web控件列表

转载 作者:行者123 更新时间:2023-12-02 18:50:44 25 4
gpt4 key购买 nike

有没有办法使用 linq 获取网页中的文本框列表,无论它们在树层次结构或容器中的位置如何。因此,不要循环遍历每个容器的 ControlCollection 来查找文本框,而是在 linq 中(也许在单个 linq 语句中)执行相同的操作?

最佳答案

我见过的一种技术是在 ControlCollection 上创建一个返回 IEnumerable 的扩展方法......如下所示:

public static IEnumerable<Control> FindAll(this ControlCollection collection)
{
foreach (Control item in collection)
{
yield return item;

if (item.HasControls())
{
foreach (var subItem in item.Controls.FindAll())
{
yield return subItem;
}
}
}
}

它处理递归。然后你可以在你的页面上使用它,如下所示:

var textboxes = this.Controls.FindAll().OfType<TextBox>();

这将为您提供页面上的所有文本框。您可以更进一步,构建处理类型过滤的扩展方法的通用版本。它可能看起来像这样:

public static IEnumerable<T> FindAll<T>(this ControlCollection collection) where T: Control
{
return collection.FindAll().OfType<T>();
}

你可以这样使用它:

var textboxes = this.Controls.FindAll<TextBox>().Where(t=>t.Visible);

关于asp.net - 使用linq获取网页中某种类型的Web控件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com