控件确定它是在Web表单还是母版页中呈现的最有效方法是什么?

时间:2009-03-13 05:49:47

标签: asp.net user-controls master-pages

我有一个可以放在Web表单(.aspx)或母版页(.master)中的控件。我希望它的功能取决于它所处的位置。

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

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

2 个答案:

答案 0 :(得分:0)

我不确定是否有更有效的方法,但如果您正在爬上层次结构,请通过NamingContainer执行此操作。您将使用它来跳过大量不必要的跃点。

除非在页面上显示大量时间的控件,否则通过NamingContainer将绰绰有余:)

答案 1 :(得分:0)

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

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;
}