Asp.net 控件最有效的方法是什么来确定它是以Web窗体还是母版页呈现?

Asp.net 控件最有效的方法是什么来确定它是以Web窗体还是母版页呈现?,asp.net,user-controls,master-pages,Asp.net,User Controls,Master Pages,我有一个控件,可以放在Web表单.aspx或母版页.Master中。我希望它能根据它在哪一个不同的功能 我的第一个想法是爬回控制树的根,看看我是否跨越了母版页控制。如果是这样,那么它必须在母版页中 但是,这似乎效率低下。有更好的方法吗?我不确定是否有更有效的方法,但如果你要提升层次结构,请通过。通过使用它,您将跳过大量不必要的跳跃 除非有一个控件会在页面上出现很多时间,否则浏览NamingContainer就足够了:首先检查页面是否有母版页。然后浏览控制树以查找内容占位符: public sta

我有一个控件,可以放在Web表单.aspx或母版页.Master中。我希望它能根据它在哪一个不同的功能

我的第一个想法是爬回控制树的根,看看我是否跨越了母版页控制。如果是这样,那么它必须在母版页中


但是,这似乎效率低下。有更好的方法吗?

我不确定是否有更有效的方法,但如果你要提升层次结构,请通过。通过使用它,您将跳过大量不必要的跳跃


除非有一个控件会在页面上出现很多时间,否则浏览NamingContainer就足够了:

首先检查页面是否有母版页。然后浏览控制树以查找内容占位符:

public static bool IsInMaster(Control control) {
    if (control.Page.Master == null) return false;
    while (control != null) {
        if (control is ContentPlaceHolder) return false;
        control = control.Parent;
    }
    return true;
}