0

我跌倒了以下练习:

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

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

正如每个人所说,“parent.master”是正确的,我可能错了。谁能提供解释或链接,为什么 parent.master 是正确的选择?

4

2 回答 2

2

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

this.Master.Master.PropertyName

谢谢,阿布舍克 S。

于 2013-11-08T10:55:31.497 回答
1

我知道这是一个老问题,但我最近遇到了这样做的需要,并认为我会添加适用于任何母版页嵌套级别的解决方案,并将母版作为您的特定类型返回,以便您可以访问其上的属性而不仅仅是一个System.Web.UI.MasterPageasthis.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
于 2018-05-14T12:09:30.933 回答