我有一个嵌套的母版页方案,我在主母版和子母版页中都有一个菜单。现在,如果我尝试访问这两者中的任何一个......在内容页面中都无法访问它们。我正在使用此代码来访问它。变量n变为空值。
Menu n = (Menu)this.Master.FindControl("Menu1");
答案 0 :(得分:1)
你的菜单控件是否在this.Master的根级别? FindControl不是递归的,所以如果你的Menu嵌套在另一个控件(Panel等)中,那么FindControl将返回null。
您可以编写自己的FindControl递归版本,这是我在之前的项目中所做的。这是我的头脑(我没有在我面前的代码):
public static Control RecursiveFindControl(ControlCollection cc, String id) {
Control c = cc.FindControl(id);
if (c == null) {
foreach (Control child in cc) {
if (child.HasChildren) {
return RecursiveFindControl(child.Controls, id);
}
}
}
return c;
}
这样称呼:
Menu foo = (Menu)RecursiveFindControl(this.Master.Controls, "menu");