我有一个包含40-50个复选框的集合,并且我已经为每个复选框设置了一个名为"attr-ID"的属性,其值是数据库中的唯一ID。我怎样才能在C#代码中通过属性名称获取控件? 在页面加载事件上,我希望根据数据库的值勾选一些复选框。
<input type="checkbox" id="rdCervical" attr-ID='111' runat='server' />
Is this what you want?
protected void Page_Load(object sender, EventArgs e)
{
var cb = FindControlByAttribute<HtmlInputCheckBox>(this.Page, "attr-ID", "111");
}
public T FindControlByAttribute<T>(Control ctl, string attributeName, string attributeValue) where T : HtmlControl
{
foreach (Control c in ctl.Controls)
{
if (c.GetType() == typeof(T) && ((T)c).Attributes[attributeName]==attributeValue)
{
return (T) c;
}
var cb= FindControlByAttribute<T>(c, attributeName, attributeValue);
if (cb != null)
return cb;
}
return null;
}
HtmlInputCheckBox
。 - Tomislav Markovskiif (rdCervical.Attributes["attr-ID"] != null)
{
string id = rdCervical.Attributes["attr-ID"];
rdCervical.Checked = true;
}
<div id="checkContainer" runat="server"></div>
,并将所有复选框放在其中。然后只需使用checkContainer.InnerHtml
并使用该库解析该代码。然后,您可以轻松使用库API按属性查找元素,我认为方法是SelectNodes
。<div id="checkContainer" runat="server"></div>
并将所有复选框放在其中。然后只需使用 checkContainer.InnerHtml
并使用此库解析该代码。然后,您可以轻松地使用该库的API通过属性查找元素。http://htmlagilitypack.codeplex.com/ - Tomislav Markovski
data-
开头的属性,但对于其他任何内容,我想您必须自己编写解析器,恐怕无能为力。 - Bala R