C# 与用于<;的FindControl()等效;李>;
我的页面上有一个C# 与用于<;的FindControl()等效;李>;,c#,asp.net,.net-4.0,controls,C#,Asp.net,.net 4.0,Controls,我的页面上有一个。它有runat=“server”。我现在可以直接在代码隐藏中引用此li。但是,正如我对页面上的其他控件所做的那样,我需要根据与它的ID匹配的字符串值来查找它 作为循环的一部分,我有: var li = Page.FindControl("li" + i); 最终想要更改li的类。但我似乎无法访问任何属性,就像我直接引用li一样。我做错了什么?是否有其他方法可以从代码隐藏中修改li的属性?当您在服务器端使用通用html元素时,在访问服务器上的时,您将获得HtmlGenericC
。它有runat=“server”
。我现在可以直接在代码隐藏中引用此li
。但是,正如我对页面上的其他控件所做的那样,我需要根据与它的ID匹配的字符串值来查找它
作为循环的一部分,我有:
var li = Page.FindControl("li" + i);
最终想要更改
li
的类。但我似乎无法访问任何属性,就像我直接引用li
一样。我做错了什么?是否有其他方法可以从代码隐藏中修改li
的属性?当您在服务器端使用通用html元素时,在访问服务器上的
时,您将获得HtmlGenericControl
的实例。与大多数.NET web控件一样,HtmlGenericControl
类不支持class
或CssClass
属性。仍然可以通过属性
集合更改类:
var li = (HtmlGenericControl) Page.FindControl("li" + i);
li.Attributes["class"] = "myCssClass";
Page.FindControl(“li”+i)
方法需要有效的控件ID。因此,您还需要为
元素添加一个id:
<li runat="server" id="li1">...</li>
但是,如果要在repeater或list view控件内创建动态列表,这可能不适用于您,因为父控件将以id为前缀。您应该为repeater/list视图控件钩住相应的item created事件,以便通过编程方式访问HtmlGenericControl中的控件以添加属性
HtmlGenericControl li = (HtmlGenericControl)Page.FindControl("li" + i);
li.Attributes["onclick"] = "return null;";
HtmlGenericControl li=(HtmlGenericControl)Page.FindControl(“li”+i)@士兵们,注意。谢谢你,伙计。没有意识到问题出在“投什么”。将其作为答案发布,我会接受。抱歉,我应该提到它还有一个id和runat属性。问题在于铸造(或缺乏铸造)+1.