我的页面上有一个<li>
。它有runat="server"
. 我现在li
可以在代码隐藏中直接引用它。但是,正如我对页面上的其他控件所做的那样,我需要根据应该与其 ID 匹配的字符串值来找到它。
作为循环的一部分,我有:
var li = Page.FindControl("li" + i);
最终想换个班li
。但是我似乎无法访问任何属性,就像我li
直接引用了一样。我在这里做错了什么?是否有另一种方法可以li
从代码隐藏中修改 的属性?
当您在服务器端使用通用 html 元素时,您将HtmlGenericControl
在访问<li>
服务器上时获得一个实例。与大多数 .NET Web 控件一样,HtmlGenericControl
该类不支持Class
or属性。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>
.
在 HtmlGenericControl 中投射控件以添加属性
HtmlGenericControl li = (HtmlGenericControl)Page.FindControl("li" + i);
li.Attributes["onclick"] = "return null;";