1

我有一个安装新页面布局的 SharePoint 功能。

此功能的一个要求是安装带有默认 Web 部件的页面布局,以便当用户运行“创建页面”操作时,会使用页面上已有的 Web 部件创建页面。

因此,我尝试在页面的 Elements 定义中添加一个 AllUsersWebPart 节点,例如。

<Elements>
    ...
    <Module ...>
        ...
        <File ...>
            <AllUsersWebPart ...>
                ...
            </AllUsersWebPart>
        </File>
        ...
    </Module>
</Elements>

安装、部署了功能等,当然得到了有用的“没有为此对象定义无参数构造函数”错误——我在 Elements.xml 中的定义很可能存在问题。

现在我遇到的真正问题是我尝试从功能定义中删除 AllUsersWebPart 部分(这样创建时页面上没有 Web 部件),并且由于 SharePoint 中的一个奇妙的错误,Web 部件是仍然为页面布局定义,即使功能定义不同 - 我在http://sharepointblog.buus-oestergaard.dk/post/Default-webparts-in-sharepoint-pagelayouts.aspx上找到了一些关于此的详细信息(Point #2)。

我已尝试升级和删除/重新安装该功能,但没有效果 - 如何从功能/内容数据库中删除此 Web 部件,以便我可以让该功能仅安装页面布局或放置正确的 Web 部件定义在功能?

4

2 回答 2

1

好的,我的页面布局正常工作,这些是我采取的步骤,以防万一这很有用:

1 在 Web 部件页面维护模式下编辑页面布局:

http://<server name>/_catalogs/masterpage/<page name>.aspx?contents=1

从那里删除所有 Web 部件实例。

2 在 Designer 中打开布局(在服务器上),并确保 WebPartZone / ZoneTemplate 为空。检查后确保页面布局设置为已批准。

页面布局在此之后可用 - 我能够删除并重新安装我的页面布局功能而没有任何问题。

看起来 Web 部件定义保留在数据库中,因此当更新/重新安装功能时,它们已经链接到页面/Web 部件区域。解决这个问题可能应该在页面布局功能中的功能接收器中的代码中完成,如果我有时间写这个,我会把它贴在某个地方......

于 2009-05-14T15:17:44.217 回答
0

卸载该功能时,您是否确保从 Masterpage/pagelayout 目录中删除了您的页面布局?

用于添加内容文件(页面布局)的功能元素在停用该功能时不会将其删除。

于 2009-05-14T11:46:00.123 回答