在aspx标记中将web部件添加到sharepoint页面

时间:2009-02-17 14:57:09

标签: asp.net sharepoint web-parts markup

我有一个aspx页面,它被复制到Project Server安装程序的layouts目录中。 aspx是一个Web部件页面,具有Web部件区域。如何在Web部件区域中的页面标记中添加Web部件?

2 个答案:

答案 0 :(得分:6)

您可以使用SPLimitedWebPart管理器在运行时添加Web部件的实例。我在MySites上执行此操作来控制添加,删除和移动组织所需的Web部件。您可以将代码放在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);
}

您可能需要执行不同的操作才能访问布局页面的Web部件管理器。在此之后,您需要重定向回页面以显示更改。您还需要存储一个比特值,以确保您不会在每次后续访问时执行操作。

如果您只需要执行此操作,那么我可能会推荐使用PowerShell。

否则,您可以通过注册标记

直接在MarkUp中添加Web部件
<%@ Register TagPrefix="ABC" Namespace="Namespace" Assembly="Assembly" %>

并直接添加网页部分,

<ABC:ClassName ID="ControlID" FrameType="None" runat="server" __WebPartId="YouWebPartGUID" WebPart="true" />

但是我们没有在网络区域内进行,因为我们不想让它被删除,所以我不知道它是否适用于那种情况。这是最简单的,但不允许任何自定义,SharePoint也不会真正“了解”Web部件。

答案 1 :(得分:3)

您无法在布局目录中拥有可自定义的Web部件页面!这仅适用于存储在文档库或SPWeb中其他文件夹中的Web部件页,即可以获得SPFile引用的ASPX文件。必须将布局目录中ASPX页面上的Web部件添加为ASPX源中的Web控件。