我遇到這樣的情況:我有一個類傳遞了一個PublishingPage實例,並且想枚舉在此頁面的佈局頁面中使用的任何和所有Web部件區域。以編程方式枚舉發布頁面佈局的Web部件區域
這證明很難。
PublishingPage具有名爲Layout的屬性,該屬性的類型爲PageLayout。這與PublishingLayoutPage不同,後者繼承(最終)爲具有Zones屬性的Page。此PageLayout類型沒有任何引用具有我需要的Zones屬性的常規ASP.NET頁面類型。
我可以從PublishingPage.Layout屬性中獲取SPListItem和SPFile,並以原始文本形式獲取頁面佈局的內容,但無法使用XmlReader進行分析,因爲它不是有效的XML(具有<%標籤無效)。
我可以從PublishingPage.ListItem.Web中獲得一個SPWeb,並且這可以讓我獲得一個SPLimitedWebPartManager,我可以在其中獲得一個LimitedWebParts集合(它具有區域信息) - 但這不會有幫助,因爲在這個階段我的代碼我沒有Web部件。
我很堅持,它看起來像發佈基礎結構是從ASP.NET和SharePoint分離。
UPDATE:
我可以使用SPLimitedWebPartManager添加一個虛擬的網絡部分(如新ContentEditorWebPart)到Web部件區域(我所使用的區域的名稱),但是當我保存並檢查返回的頁面(並獲得一個新的SPLWPM),我可以返回WebParts,但Zone屬性爲空(ZoneID屬性填充並正確)。
沒有OOB解決方案... http://stackoverflow.com/questions/3821067/in-sharepoint-how-to-list-all-webpartzones-of-a-specific-page-from-object-model – 2011-02-15 19:28:09