Развертывание веб-части на странице во время активации функции в Sandbox Solution - PullRequest
2 голосов
/ 04 июля 2010

Последние несколько дней я бился головой об стену на этой стене.У меня есть довольно простое требование, но я не вижу, как это может быть достигнуто с помощью изолированного решения.Я в депрессии, потому что думаю, что это критическое ограничение, которое также вызовет у меня горе в будущих решениях.

Вот сценарий.

У меня есть существующий сайт, и я хочу иметь возможность активировать функцию, а затем, как часть этой активации, удалить веб-частина некоторые конкретные страницы.В моем случае я хочу иметь возможность поместить его на страницу списка «AllItems.aspx», но у меня также возникают проблемы при добавлении его на домашнюю страницу default.aspx.Я был бы счастлив в любом случае.

Примечание. Я хочу иметь возможность активировать это на существующем сайте, я не хочу создавать новое определение сайта.

Вот что я пробовал:

  1. Приемник функций: нет.Вы не можете использовать класс SPLimitedWebPartManager, а класс SPWebPartManager работает только в контексте страницы, на которой он создан.Так что, в сущности, вы не можете сделать это в коде.

  2. Модуль XML: Я думаю, что это наиболее вероятный путь продвижения вперед, однако, похоже, он всегда хочет предоставить файл сайту.Например, если я хочу добавить веб-часть на домашнюю страницу (default.aspx), то, похоже, не существует способа просто получить ссылку на страницу, она всегда хочетперезаписать его новым файлом.Но я не хочу этого делать, я просто хочу добавить веб-часть на существующую страницу.Посмотрите мои элементы XML ниже, я попробовал различные комбинации «IgnoreIfAlreadyExists», удалив атрибут Path и установив его пустым.

  3. Делегирование: не разрешено в песочнице.

  4. Я действительно хочу добавить веб-часть к «AllItems.aspx»."в форме списка, поэтому я также попытался добавить веб-часть через файл SCHEMA.XML, как описано здесь: Добавить веб-часть через SCHEMA.XML , но это тоже не сработало.Я должен быть в состоянии сделать это, более жестко настраивая определение списка, но это кажется немного чрезмерным, и я неохотно делаю это, прежде чем исключить другие варианты.

Итак, единственный аккуратный способ, которым я могу видеть сквозь него, - это какая-то страница "Конфигурация", которая затем делает это через веб-службы.Но это боль, когда пользователь «Активирует» функцию, а затем снова «Активирует» на моей странице конфигурации.

В любом случае, может быть, я просто упускаю что-то очевидное.Прошло немного времени между XML возиться на SharePoint для меня, и это мое первое решение Sandbox.Очень надеюсь, что кто-то еще сломал эту гайку.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="Pages">
    <File Path="" Url="default.aspx">
      <AllUsersWebPart WebPartZoneID="Left" WebPartOrder="1">
        <![CDATA[
              <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image">
                <Assembly>(Assembly), Version=1.0.0.0, Culture=neutral, PublicKeyToken=12baeb5f1600543c</Assembly>
                <TypeName>(Typename)</TypeName>
                <FrameType>None</FrameType>
                <Title>ListAnnouncement</Title>
              </WebPart>
            ]]>
      </AllUsersWebPart>
    </File>
</Module>
</Elements>

1 Ответ

0 голосов
/ 01 декабря 2011

Вы можете добавить веб-части к существующим страницам, используя прокси с полным доверием . Цитировать MSDN:

"Прокси-серверы для песочницы - это компоненты, которые позволяют вам полностью доверять функциональность, доступная для изолированных решений. "

Короче говоря, вам просто нужно создать отдельную несочистную сборку , которая содержит методы для добавления веб-частей по указанному URL-адресу в соответствии с обычным режимом (т.е. с использованием класса SPLimitedWebPartManager). Затем вы ссылаетесь и регистрируете эту прокси-сборку в своем изолированном решении - мало чем отличается от использования веб-службы на самом деле.

Все подробно описано здесь: Как: создать и зарегистрировать прокси-сервер песочницы

И вот кто-то, кто уже сделал это: Программное добавление веб-части в среде песочницы

Я пытаюсь сделать то же самое в песочнице, которая должна быть развернута в SharePoint Online. Это оказывается немного неприятно, потому что вы не можете масштабировать функции до уровня фермы - но у вас не должно быть этой проблемы в локальной среде. Дайте мне знать, как вы поживаете ...

...