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