我摔倒了下面的练习:
你有一个主页“custom.master”。然后,您有一个嵌套的母版页 “nested.master”。然后,您有一个使用的内容页面 nested.master。如何从中访问custom.master的属性 内容页面。
正确的答案应该是“parent.master.propertyname”。但我希望“master.master.propertyname”作为内容页面的父级不应该是母版页。
大家都说,“parent.master”是对的,我可能错了。任何人都可以提供解释或链接,为什么parent.master会是正确的选择?
答案 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