0

有谁知道如何使用 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);
}

有趣的是,如果我在调试期间询问 Web 对象,我可以看到 hasUniqueRoleAssignments 属性和 breakRoleInheritance 函数确实存在。此外,MSDN 声明这两个成员都可用于SP.SecurableObject类——我假设 Web 或 List 都将从此类继承。

有任何想法吗?

4

1 回答 1

1

根据Retrieving a Client Object Does Not Retrieve All Properties,您将需要调用 executeQueryAsync 并在委托函数中使用 get_hasUniqueRoleAssignments :

在服务器对象模型中,当您返回一个 SPWeb 对象时,它的所有属性都可以在代码中使用。但是为了提高客户端对象模型的性能,当您返回 Web 对象时,某些属性不包括在内,您必须显式检索它们。例如,Web 类从 SecurableObject 类继承 HasUniqueRoleAssignments 属性,但是当您返回 Web 对象时,默认情况下不会检索此属性。

于 2011-01-27T16:27:11.947 回答