小编Jam*_*ove的帖子

以编程方式枚举发布页面布局的Web部件区域

我有一种情况,我有一个类传递一个PublishingPage实例,我想枚举在此页面的布局页面中使用的任何和所有Web部件区域.

事实证明这很艰难.

PublishingPage有一个名为Layout的属性,它的类型为PageLayout.这与PublishingLayoutPage不同,后者(最终)继承到具有Zones属性的Page.此PageLayout类型没有任何引用具有我需要的Zones属性的普通ASP.NET页面类型.

我可以从PublishingPage.Layout属性获取SPListItem和SPFile,并以原始文本形式获取页面布局的内容,但是这不能用XmlReader解析,因为它不是有效的XML(<%标签无效).

我可以从PublishingPage.ListItem.Web获得一个SPWeb,这可以让我得到一个SPLimitedWebPartManager,在那里我可以得到一个LimitedWebParts(它有区域信息)的集合 - 但这没有用,因为在我的代码的这个阶段我有没有网页部分.

我很困惑,看起来发布基础设施与ASP.NET和SharePoint完全脱节.

更新:

我可以使用SPLimitedWebPartManager将虚拟Web部件(如新的ContentEditorWebPart)添加到Web部件区域(我有所使用的区域的名称),但是当我将其保存并检查页面时(并获取)一个新的SPLWPM),我可以恢复WebParts,但Zone属性为null(ZoneID属性已填充且正确).

sharepoint publishing sharepoint-2007 sharepoint-object-model

5
推荐指数
1
解决办法
5558
查看次数