一千萬個為什麽

搜索

以編程方式復制內容類型時的異常

將內容類型從一個Web復制到另一個Web時,我遇到異常:

foreach (SPContentType destinationWebCt in destinationWeb.ContentTypes) 
{ 
    destinationWeb.ContentTypes.Add(existingWebCt); 
    destinationWeb.Update(); 
} 

existingWebCt是來自其他網絡的內容類型,例如/網站/網頁。 destinationWeb是我希望將內容類型復制到例如的網頁。 /網站/ DestinationWeb。

我得到了SPException,它說內容類型之類的東西不能在其範圍之外添加。

然後我決定將所有“ContentTypes”替換為“AvailableContentTypes”,但後來我得到了SPException,說這個collcetion無法修改。

那麽如何將內容類型復制到另一個Web?

謝謝。

最佳答案

如果您希望內容類型在其他網絡中可用,則您必須此網站內容類型集合中的內容類型或這兩個網絡共有的任何父網站。

你可以,當然,創建新的SPContentType實例,復制所有屬性,然後將其添加到另一個網站,但它是一個完全不同的內容類型然後它是分開的 - 如果你對一個CT進行更改,它將不會反映在另一個。所以這是沒有辦法推薦和有用的。

而AvailableContentTypes屬性返回當前Web和父網站的所有內容類型,但是只讀內容類型因此不允許修改。

轉載註明原文: 以編程方式復制內容類型時的異常