访问根母版页的属性

时间:2013-11-08 10:44:05

标签: c# asp.net master-pages

我摔倒了下面的练习:

  

你有一个主页“custom.master”。然后,您有一个嵌套的母版页   “nested.master”。然后,您有一个使用的内容页面   nested.master。如何从中访问custom.master的属性   内容页面。

正确的答案应该是“parent.master.propertyname”。但我希望“master.master.propertyname”作为内容页面的父级不应该是母版页。

大家都说,“parent.master”是对的,我可能错了。任何人都可以提供解释或链接,为什么parent.master会是正确的选择?

2 个答案:

答案 0 :(得分:2)

以下代码将为您提供所需的结果

this.Master.Master.PropertyName

谢谢, Abhishek S。

答案 1 :(得分:1)

我知道这是一个老问题,但我最近想要这样做,并且认为我会添加我的解决方案,该解决方案适用于任何母版页嵌套级别,并且还将主服务器作为您的特定类型返回,以便您可以访问它上面的属性而不只是System.Web.UI.MasterPage this.Master.Master会给出:

public static T GetRootMasterPage<T>(MasterPage master) where T : MasterPage
{
    if (master != null)
    {
        if (master.Master == null) // We've found the root
        {
            if (master is T)
            {
                return master as T;
            }
            else
            {
                throw new Exception($"GetRootMasterPage<T>: Could not find MasterPage of type {typeof(T)}");
            }
        }
        else // We're on a nested master
        {
            return GetRootMasterPage<T>(master.Master);
        }
    }

    return null;
}

用法:

var root = GetRootMasterPage<Root>(this.Master);
// ...
// Do whatever with your 'Root' master page type