gpt4 book ai didi

c# - 在aspx中按属性查找元素

转载 作者:行者123 更新时间:2023-11-30 15:31:56 24 4
gpt4 key购买 nike

<div id="foo" runat="server" data-id="bar"></div>

在后面的代码中,可以直接通过 id 或使用 FindControl() 访问此 div。

但是有什么方法可以根据 id 以外的其他属性在 aspx 上搜索元素吗?例如上面的 data-id="bar"

最佳答案

此扩展方法(使用递归)可能会有所帮助:

public static IEnumerable<Control>
FindControlByAttribute(this Control control, string key)
{
var current = control as System.Web.UI.HtmlControls.HtmlControl;
if (current != null)
{
var k = current.Attributes[key];
if (k != null)
yield return current;
}
if (control.HasControls())
{
foreach (Control c in control.Controls)
{
foreach (Control item in c.FindControlByAttribute(key, value))
{
yield return item;
}
}
}
}

示例用法:

protected void Page_Load(object sender, EventArgs e)
{
var controls = this
.FindControlByAttribute("data-id")
.ToList();
}

如果您还想按值过滤:

public static IEnumerable<Control>
FindControlByAttribute(this Control control, string key, string value)
{
var current = control as System.Web.UI.HtmlControls.HtmlControl;
if (current != null)
{
var k = current.Attributes[key];
if (k != null && k == value)
yield return current;
}
if (control.HasControls())
{
foreach (Control c in control.Controls)
{
foreach (Control item in c.FindControlByAttribute(key, value))
{
yield return item;
}
}
}
}

关于c# - 在aspx中按属性查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908209/

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