При попытке получить все веб-части на странице Sharepoint Online с помощью C # CSOM, я получаю 0 возвратов (в то время как на моей странице есть * веб-части) - PullRequest
0 голосов
/ 06 июля 2018

Так что я использую C # CSOM-код, чтобы попытаться получить все веб-части, чтобы я мог их удалить. Моя страница Sharepoint Online - это просто стандартная современная страница командного сайта, в которой ничего не изменилось Я хочу получить все веб-части, а затем удалить стандартные ссылки быстрые ссылки с помощью CSOM. Вот мой код:

            Microsoft.SharePoint.Client.File oFile = 
                Context.Web.GetFileByServerRelativeUrl("/sites/CR-WST-GYM-20130306/SitePages/Home.aspx");
            LimitedWebPartManager wpManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
            /*Context.Load(wpManager.WebParts,
                wps => wps.Include(
                wp => wp.WebPart.Title));*/
            Context.Load(wpManager);
            Context.ExecuteQueryRetry();

            WebPartDefinitionCollection wpDefinitionCollection = wpManager.WebParts;
            Context.Load(wpDefinitionCollection);
            Context.ExecuteQueryRetry();  

Он загружается, но wpManager.WebParts содержит 0 значений и имеет счетчик 0 ... как это возможно, если к вновь созданному командному сайту уже добавлены стандартные веб-части? Разве я не должен получить хотя бы пару? Что я могу делать не так?

Этот код взят из: https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee539301(v%3Doffice.14).

РЕДАКТИРОВАТЬ: я также добавил новую веб-часть через интерфейс на мою главную страницу, чтобы посмотреть, получу ли я значение «1», но оно все равно 0 ...

1 Ответ

0 голосов
/ 06 июля 2018

Для " современных " страниц сайта OfficeDevPnP.Core.Pages пространство имен введено для управления веб-частями вместо Microsoft.SharePoint.Client.WebParts пространства имен

В следующем примере показано, как получить список веб-частей на стороне клиента на странице

using (var ctx = new ClientContext(webUrl))
{
      ctx.Credentials = GetCredentials(userName, password);

      var page = OfficeDevPnP.Core.Pages.ClientSidePage.Load(ctx, "Home.aspx");
      var webParts = page.Controls.Where(c => c.Type.Name == "ClientSideWebPart").ToList();
}

Предпосылки

SharePointPnPCoreOnline упаковка

Ссылка

Настройка "современных" страниц сайта

...