Получить все главные страницы для сайта SharePoint? - PullRequest
2 голосов
/ 11 ноября 2009

Как программно определить, какие главные страницы (пользовательские и OOTB) доступны для использования для веб-сайта в SharePoint?

Спасибо, MagicAndi

Ответы [ 2 ]

9 голосов
/ 11 ноября 2009

Я придумал это решение, используя объект 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)
{
}
0 голосов
/ 11 ноября 2009

Используйте отражение и проверьте, равен ли базовый тип типа

System.Web.UI.MasterPage
.

Так что-то вроде:

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

Но, в зависимости от того, в какой сборке определены ваши MasterPages и того факта, что он перебирает все типы в конкретной сборке, это может определенно быть не лучшим решением.

Я блаженно не осведомлен о SharePoint, но, думаю, это решение несколько более общее.

...