如果您需要刪除整個角色assgnment你可以這樣做:
SPUser user = ...;
list.RoleAssignments.Remove(user);
如果需要撤銷一些定義綁定,你可以這樣做:
SPUser user = ...;
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);
如果那不是你想要的,請詳細描述一下。
更新: 這是我測試過的示例代碼,它的工作原理。它將刪除Contribute角色並將「讀取」角色添加到目標組。請注意,我擁有非英文Sharepoint版本,因此請確保角色的名稱。
static void Main(string[] args)
{
using (SPSite site = new SPSite("site_url"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.GetList(web.Url + "/" + "list_url");
SPGroup group = web.SiteGroups["target_group_name"];
SPRoleDefinition contributeDef = web.RoleDefinitions["Contribute"];
SPRoleDefinition readDef = web.RoleDefinitions["Read"];
SPRoleAssignment contributeRole = new SPRoleAssignment(group);
contributeRole.RoleDefinitionBindings.Add(contributeDef);
if (!list.HasUniqueRoleAssignments) // required to make role change
list.BreakRoleInheritance(true);
var assignmentForGroup = list.RoleAssignments.GetAssignmentByPrincipal(group);
assignmentForGroup.RoleDefinitionBindings.Remove(contributeDef);
assignmentForGroup.RoleDefinitionBindings.Add(readDef);
assignmentForGroup.Update();
}
}
}
假設員工組對名單有Contribute權限,我希望他們有Read。隨着我發佈的代碼,我可以給他們閱讀,但首先我還需要撤銷Contribute。 – Nick
我已經更新了工作示例的問題。 – EvgK