У меня есть страница aspx, которая копируется в каталог макетов установки Project Server. Aspx - это страница веб-части, которая имеет зону веб-частей. Как добавить веб-часть в разметку страницы в зоне веб-частей?
Добавить веб-часть на страницу sharepoint в разметке aspx
Ответы (2)
В каталоге макетов не может быть настраиваемых страниц веб-частей! Это поддерживается только на страницах веб-частей, хранящихся в библиотеке документов или другой папке в SPWeb, то есть файлах ASPX, на которые вы можете получить ссылку на SPFile. Веб-части на страницах ASPX в каталоге макетов должны быть добавлены как веб-элементы управления в источник ASPX.
Вы можете использовать диспетчер SPLimitedWebPart для добавления экземпляра веб-части во время выполнения. Я делаю это на наших личных сайтах, чтобы контролировать добавление, удаление и перемещение веб-частей, которые требуются организации. Вы можете поместить код на страницу aspx.
SPFile thePage = currentWeb.RootFolder.Files["default.aspx"]
using (Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager spLimitedWPManager = thePage.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
{
Assembly assembly = Assembly.Load("WebPartAssemblyName");
WebPart webPart = (WebPart)assembly.CreateInstance("WebPartClassName");
spLimitedWPManager.AddWebPart(webPart, ZoneId, ZoneIndex);
}
Возможно, вам придется сделать что-то другое, чтобы получить доступ к диспетчеру веб-частей для своей страницы макетов. После этого вам нужно перенаправить обратно на страницу для отображения изменений. Вы также захотите сохранить битовое значение, чтобы гарантировать, что вы не выполняете действие при каждом последующем посещении.
Если вам нужно сделать это только один раз, я могу порекомендовать PowerShell.
В противном случае вы можете добавить веб-часть прямо в MarkUp, зарегистрировав тег:
<%@ Register TagPrefix="ABC" Namespace="Namespace" Assembly="Assembly" %>
и напрямую добавляя веб-часть,
<ABC:ClassName ID="ControlID" FrameType="None" runat="server" __WebPartId="YouWebPartGUID" WebPart="true" />
но мы не делали этого внутри веб-зоны, потому что мы не хотели разрешать его удаление, поэтому я не знаю, работает ли это в этом сценарии. Это самый простой способ, но он не позволяет выполнять какие-либо настройки, а SharePoint на самом деле «не знает» о веб-части.