我有一个可以放在Web表单(.aspx)或母版页(.master)中的控件。我希望它的功能取决于它所处的位置。
我的第一个想法是将控制树爬回根目录,看看我是否越过了MasterPage控件。如果是这样,那么它必须在母版页中。
但是,这似乎效率低下。还有更好的方法吗?
答案 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;
}