我想在代码后面的li标签中添加一个css类,给出li标签的id。
<li id="liOne" runat="server" class=""></li>
这是我的c#代码:
System.Web.UI.HtmlControls.HtmlGenericControl ctrl = Page.FindControl("liOne") as System.Web.UI.HtmlControls.HtmlGenericControl;
if(ctrl!=null)
ctrl.Attributes["class"] += " active";
我已尝试过上述方法但返回null。是否有任何方法不需要迭代所有页面控件来获取li标签?感谢。
答案 0 :(得分:1)
您正在查看的控件li
不会位于页面顶层,因为它将是ul
的子级。 FindControl
在顶层找到。您应该在liOne的直接父母身上致电FindControl
。
您已经拥有id
li并且已经设置了runat="server"
属性,因此您应该能够直接访问它而不需要FindControl
。
liOne.Attributes["class"] += " active";
FindControl方法可用于访问ID不是的控件 在设计时可用。该方法仅搜索页面 立即或顶级容器;它不会递归搜索 控件命名页面中包含的容器。访问 在从属命名容器中控件,调用FindControl 该容器的方法。
修改根据评论,有很多控件
您可以指定具有某些序列的ID,例如li1,li2,li3,并通过其父级进行评估。
for(int i=1; i < 4; i++)
{
System.Web.UI.HtmlControls.HtmlGenericControl ctrl = ul1.FindControl("li" + i) as System.Web.UI.HtmlControls.HtmlGenericControl;
//Do what you want with ctrl
}