2

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

谢谢,魔术安迪

4

2 回答 2

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)
{
}
于 2009-11-11T15:53:22.540 回答
-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 一无所知,但我猜这个解决方案更通用。

于 2009-11-11T15:51:07.930 回答