Как получить все типы контента из семейства сайтов в ферме SharePoint - PullRequest
2 голосов
/ 29 декабря 2010

Как получить все типы контента из семейства сайтов в ферме SharePoint.Помните, я хочу сделать это с помощью объектной модели SharePoint.Любая помощь будет оценена.

Ответы [ 3 ]

4 голосов
/ 29 декабря 2010

Это сделает все типы SPWeb на Сайте.Обратите внимание, что это даст дубликаты.

    public void GetContentTypes()
    {
        string siteUrl = "Add site url here";

        using (SPSite site = new SPSite(siteUrl))
        {
                foreach (SPWeb web in site.AllWebs)
                {
                    foreach (SPContentType item in web.ContentTypes)
                    {
                        Debug.WriteLine(item.Name);
                    }
                    foreach (SPList list in web.Lists)
                    {
                        foreach (SPContentType item in list.ContentTypes)
                        {
                            Debug.WriteLine(item.Name);
                        }
                    }
                    web.Dispose();
                }
        }
    }
3 голосов
/ 30 декабря 2010

Это можно сделать следующим образом:

public void ListContentTypes(string siteUrl)
{
  try
  {
    using (SPSite site = new SPSite(siteUrl))
    {
      using (SPWeb web = site.OpenWeb())
      {
        ListContentTypes(web);
      }
    }
  }
  catch (Exception ex)
  {
    // add some proper error handling here
  }
}

public void ListContentTypes(SPWeb web)
{
  foreach (SPContentType ct in web.ContentTypes)
  {
    // do whatever you want to do with the content type here
  }

  foreach (SPWeb subWeb in web.Webs)
  {
    try
    {
      ListContentTypes(subWeb);
    }
    finally
    {
      if (subWeb != null)
      {
        subWeb.Dispose();
      }
    }
  }
}

Это позволит найти все типы контента, существующие в семействе сайтов, но помните, что не все типы контента будут доступны во всем семействе сайтов.Например: если у вас есть тип контента «Продукт», который существует на дочернем сайте, приведенный выше код найдет его, но вы не сможете использовать его в корневом веб-сайте, поскольку он определен на более низком уровне.

2 голосов
/ 29 декабря 2010

Попробуйте это: urWeb.AvailableContentTypes

...