2011-01-27 46 views
0

是否有人知道如何使用ECMAscript在Web上中斷角色繼承(即停止從其父級繼承權限)?SharePoint 2010:使用ECMAScript打破角色繼承

這是我嘗試使用JavaScript代碼,但我得到一個運行時錯誤,指出性質沒有正確初始化:

var clientContext = new SP.ClientContext.get_current(); 
var web = clientContext.get_web(); 
clientContext.load(web); 

if (!web.get_hasUniqueRoleAssignments()) { 
    web.breakRoleInheritance(true, false); 
} 

有趣的是,如果我在調試過程中interogate網頁對象,我可以看到hasUniqueRoleAssignments屬性和breakRoleInheritance函數實際上都存在。另外,MSDN聲明這兩個成員都可以在SP.SecurableObject類中使用 - 我假設Web或List都將繼承此類。

任何想法?

回答

1

Retrieving a Client Object Does Not Retrieve All Properties,你將需要調用executeQueryAsync和使用委託函數內部get_hasUniqueRoleAssignments:

在服務器對象模型中,當您返回SPWeb對象,它的所有屬性的使用變得可用碼。但爲了提高客戶端對象模型的性能,當您返回一個Web對象時,某些屬性不包括在內,並且您必須明確地檢索它們。例如,Web類繼承SecurableObject類中的HasUniqueRoleAssignments屬性,但是當您返回Web對象時,默認情況下不會檢索此屬性。

+0

您提供的文章中的示例代碼正是我所需要的 - 直到我之後的實際屬性。非常感謝Rich。 – 2011-01-27 16:50:35