如何在C#中通过字符串获取HtmlGenericControl

时间:2017-03-14 07:45:20

标签: c# asp.net webforms ascx findcontrol

我想在代码后面的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标签?感谢。

1 个答案:

答案 0 :(得分:1)

您正在查看的控件li不会位于页面顶层,因为它将是ul的子级。 FindControl在顶层找到。您应该在liOne的直接父母身上致电FindControl

您已经拥有id li并且已经设置了runat="server"属性,因此您应该能够直接访问它而不需要FindControl

liOne.Attributes["class"] += " active";

Page.FindControl

  

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
}