在嵌套母版页方案中,无法在内容页面中访问子母版页中的菜单控件

时间:2010-02-17 05:36:50

标签: .net asp.net

我有一个嵌套的母版页方案,我在主母版和子母版页中都有一个菜单。现在,如果我尝试访问这两者中的任何一个......在内容页面中都无法访问它们。我正在使用此代码来访问它。变量n变为空值。

Menu n = (Menu)this.Master.FindControl("Menu1");

1 个答案:

答案 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");