我的页面上有<li>
。它有runat="server"
。我现在可以直接在代码隐藏中引用此li
。但是,正如我对页面上的其他控件所做的那样,我需要根据与其ID匹配的字符串值来查找它。
作为循环的一部分,我有:
var li = Page.FindControl("li" + i);
最终想要改变li
的类。但是我似乎没有像我直接引用li
那样访问任何属性。我在这做错了什么?是否有另一种方法可以修改代码隐藏中的li
属性?
答案 0 :(得分:2)
当您在服务器端使用通用html元素时,在访问服务器上的HtmlGenericControl
时,您将获得<li>
的实例。与大多数.NET Web控件一样,HtmlGenericControl
类不支持Class
或CssClass
属性。您仍然可以通过Attributes
集合更改课程:
var li = (HtmlGenericControl) Page.FindControl("li" + i);
li.Attributes["class"] = "myCssClass";
Page.FindControl("li" + i)
方法需要有效的控件ID 。因此,您还需要为<li>
元素添加ID:
<li runat="server" id="li1">...</li>
但是,如果要在转发器或列表视图控件中创建动态列表,这可能对您不起作用,因为id将以父控件为前缀。您应该挂钩到转发器/列表视图控件的相应项目创建事件,以便以编程方式访问<li>
。
答案 1 :(得分:2)
在HtmlGenericControl中投射控件以添加属性
HtmlGenericControl li = (HtmlGenericControl)Page.FindControl("li" + i);
li.Attributes["onclick"] = "return null;";