C#相当于jQuery.parents(类型)

C#相当于jQuery.parents(类型),c#,asp.net,C#,Asp.net,在jQuery中有一个很酷的函数叫做.parents('xx'),它使我能够从DOM树中的某个对象开始,并在DOM中向上搜索以找到特定类型的父对象 现在我在C代码中寻找同样的东西。我有一个asp.net面板,它有时位于另一个父面板中,有时甚至位于2或3个父面板中,我需要向上遍历这些父面板,最终找到我正在寻找的UserControl 在C#/asp.net中有没有一种简单的方法可以做到这一点 编辑:在重读你的问题后,我根据我帖子中的第二个链接尝试了一下: public static T FindC

在jQuery中有一个很酷的函数叫做.parents('xx'),它使我能够从DOM树中的某个对象开始,并在DOM中向上搜索以找到特定类型的父对象

现在我在C代码中寻找同样的东西。我有一个
asp.net面板
,它有时位于另一个父面板中,有时甚至位于2或3个父面板中,我需要向上遍历这些父面板,最终找到我正在寻找的
UserControl


在C#/asp.net中有没有一种简单的方法可以做到这一点

编辑:在重读你的问题后,我根据我帖子中的第二个链接尝试了一下:

public static T FindControl<T>(System.Web.UI.Control Control) where T : class
{
     T found = default(T);

     if (Control != null && Control.Parent != null)
     {
        if(Control.Parent is T)
            found = Control.Parent;
        else
            found = FindControl<T>(Control.Parent);
     }

     return found;
}
您可以这样使用:

var control = FindControlRecursive(MyPanel.Page,"controlId");

您还可以将其与以下内容结合使用:创建更好的版本。

您应该能够使用的属性:


这不是走错路了吗?OP要求向上搜索,但如果我没有弄错的话,这是向下搜索。谢谢,基于你的代码思想,我已经创建了一些完全符合我需要的东西。
var control = FindControlRecursive(MyPanel.Page,"controlId");
private Control FindParent(Control child, string id) 
{
    if (child.ID == id)
        return child;
    if (child.Parent != null)
        return FindParent(child.Parent, id);
    return null;
}