检索SharePoint站点的所有母版页?

时间:2009-11-11 15:48:51

标签: sharepoint api sharepoint-2007 moss caml

如何以编程方式确定哪些主页(自定义和OOTB)可用于SharePoint中的网站?

谢谢,MagicAndi

2 个答案:

答案 0 :(得分:9)

我提出了这个解决方案,利用SPQuery对象查询团队网站集的母版页库列表:

try
{
    using (SPSite site = new SPSite(this.ParentSiteUrl))
    {
            using (SPWeb web = site.OpenWeb())
            {
                SPList myList = web.Lists["Master Page Gallery"];
                SPQuery oQuery = new SPQuery();
                oQuery.Query = string.Format("<Where><Contains><FieldRef Name=\"FileLeafRef\" /><Value Type=\"File\">.master</Value></Contains></Where><OrderBy><FieldRef Name=\"FileLeafRef\" /></OrderBy>");
                SPListItemCollection colListItems = myList.GetItems(oQuery);

                foreach (SPListItem currentItem in colListItems)
                {
                   // Process master pages
                }
        }
    }
}
catch (Exception ex)
{
}

答案 1 :(得分:-2)

使用反射并检查类型的基本类型是否等于

System.Web.UI.MasterPage

这就是:

foreach(Type t in Assembly.GetExecutingAssembly().GetTypes())
{
  if (t.BaseType==typeof(MasterPage))
  {
      // do something, add to collection - whatever
  }
}

但是,根据您的MasterPages定义的程序集,以及迭代特定程序集中所有类型的事实,它可能绝对不是最佳解决方案。

我对SharePoint很无知,但我认为这个解决方案更通用了。