0

ECMAscript を使用して、Web でロールの継承を解除する (つまり、親からのアクセス許可の継承を停止する) 方法を知っている人はいますか?

これは私が使用しようとしている 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

クライアント オブジェクトの取得ではすべてのプロパティを取得しないによると、executeQueryAsync を呼び出し、デリゲート関数内で get_hasUniqueRoleAssignments を使用する必要があります。

サーバー オブジェクト モデルでは、SPWeb オブジェクトを返すと、そのすべてのプロパティをコードで使用できるようになります。ただし、クライアント オブジェクト モデルのパフォーマンスを向上させるには、Web オブジェクトを返すときに特定のプロパティが含まれていないため、それらを明示的に取得する必要があります。たとえば、Web クラスは SecurableObject クラスから HasUniqueRoleAssignments プロパティを継承しますが、Web オブジェクトを返す場合、このプロパティは既定では取得されません。

于 2011-01-27T16:27:11.947 に答える