Asp.net 查找HtmlGenericControl

Asp.net 查找HtmlGenericControl,asp.net,vb.net,findcontrol,htmlgenericcontrol,Asp.net,Vb.net,Findcontrol,Htmlgenericcontrol,我正在尝试将两个变量设置为两个各自的控件,而我当前的代码不起作用。正确的语法是什么 ascx代码: <ul> <li runat="server" id="searchListItem"> <a href="javascript:void(0)">Search Keywords</a> </li> </ul> <input runat="server" id="searchBox" typ

我正在尝试将两个变量设置为两个各自的控件,而我当前的代码不起作用。正确的语法是什么

ascx代码:

<ul>
    <li runat="server" id="searchListItem">
       <a href="javascript:void(0)">Search Keywords</a>
    </li>
</ul>
<input runat="server" id="searchBox" type="text" />
当我单步执行代码
jobsLi
jobsBox
时,保持
nothing
。FindControl()
不会递归执行搜索,因此解决此问题的一种方法是编写自定义方法

围绕这些线:

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
}
.FindControl()
不会递归执行搜索,因此解决此问题的一种方法是编写一个自定义方法

围绕这些线:

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
}

我记不清了,但当您将
runat=“server”
添加到这两个控件时,它们应该可以从CodeBehind自动访问,不是吗?此外,我认为
.FindControl()
不是递归的。但话说回来,我不记得了。@MelanciaUK:他们不记得了。我不知道这是否重要,但找到控件的代码在我刚刚确认的页面加载函数中。它不是递归的@美拉尼亚克:谢谢!我使用了一个递归函数,现在它可以工作了。如果你写评论作为回答,我会接受。我记不清了,但当你向两个控件添加
runat=“server”
时,它们应该可以从CodeBehind自动访问,不是吗?另外,我认为
.FindControl()
不是递归的。但话说回来,我不记得了。@MelanciaUK:他们不记得了。我不知道这是否重要,但找到控件的代码在我刚刚确认的页面加载函数中。它不是递归的@美拉尼亚克:谢谢!我使用了一个递归函数,现在它可以工作了。如果你写评论作为回答,我会接受。