【问题标题】:Add web part to sharepoint page in aspx markup在 aspx 标记中将 Web 部件添加到共享点页面
【发布时间】:2010-10-08 02:49:08
【问题描述】:

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

【问题讨论】:

  • 对于看到这个问题并希望将 webparts 嵌入 aspx 页面的其他人,我已经开始了一个相关的问题(但仍然非常不同。我的基于 aspx 页面被放置在页面布局部分共享点站点。stackoverflow.com/questions/31229284/…

标签: asp.net sharepoint web-parts markup


【解决方案1】:

您可以使用 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" %>

并直接添加 web 部件,

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

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

【讨论】:

    【解决方案2】:

    布局目录中不能有可自定义的 Web 部件页面!这仅在存储在文档库或 SPWeb 中的其他文件夹中的 Web 部件页面上受支持,即您可以获得 SPFile 引用的 ASPX 文件。 layouts 目录中 ASPX 页面上的 Web 部件必须作为 Web 控件添加到 ASPX 源中。

    【讨论】:

    • 我明白了,但似乎 ProjectCenter 页面(ps/pwa/projects.aspx - 用于我的安装)是 layouts 目录中的 Web 部件页面。有没有办法绕过您提到的创建类似 Web 部件页面的限制?
    • 好吧,如果 URL 不包含 _layouts 则该文件不在 layouts 文件夹中。在我看来,projects.aspx 更像是位于网站的根文件夹中,即 SPWeb.RootFolder
    猜你喜欢
    • 1970-01-01
    • 2013-02-28
    • 2012-06-03
    • 2015-01-14
    • 2013-12-20
    • 2011-06-13
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    相关资源
    最近更新 更多