Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与用于<;的FindControl()等效;李>;_C#_Asp.net_.net 4.0_Controls - Fatal编程技术网

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.