public ActionResult GetRoleTree(int id) { //获取角色 权限ID var listRolePerIDs = new P_RolePermissionBLL().GetListBy(rp => rp.RoleID == id).Select(rp => rp.PermissionID); //获取所有 权限 var listAllPer = new P_PermissionBLL().GetListBy(p => p.IsActive == true).ToList(); //获取角色权限 var listRolePer = (from p in listAllPer where listRolePerIDs.Contains(p.ID) select p).ToList(); //获取父权限集合 var listParentPer = (from p in listAllPer where p.ParentID == 0 select p).ToList(); //var listParentPer = (from p in listAllPer select p).ToList(); //准备一个 角色id,传给视图 ViewBag.roleId = id; return(PartialView(new Model.ViewModel.RolePemissionTree() { RolePers = listRolePer, AllPers = listAllPer, AllParentPers = listParentPer })); }
public ActionResult SetRolePer() { try { //获取角色id int roleId = int.Parse(Request.Form["rId"]); //获取新的权限 id字符串 string[] perIds = Request.Form["rolePerids"].Split(new string[1] { "," }, StringSplitOptions.RemoveEmptyEntries); //原来的所有权限id 3 var listOldPer = new P_RolePermissionBLL().GetListBy(rp => rp.RoleID == roleId).Select(r => r.PermissionID).ToList(); //新权限id 3,5,6 var listNewPer = perIds.ToList(); //将两个集合中 相同的元素 都删除,之后,新权限集合里的权限就是要新增到数据库的,旧权限集合里的权限 就是要从数据库删除的 for (int i = listOldPer.Count - 1; i >= 0; i--) { int old = listOldPer[i]; if (listNewPer.Contains(old.ToString())) { listOldPer.Remove(old); listNewPer.Remove(old.ToString()); } } //新增新的权限 listNewPer.ForEach(newP => { new P_RolePermissionBLL().Add(new Model.P_RolePermission() { RoleID = roleId, PermissionID = int.Parse(newP), IsActive = true }); }); //移除旧的权限 listOldPer.ForEach(oldP => { new P_RolePermissionBLL().DelBy(p => p.RoleID == roleId && p.PermissionID == oldP); }); } catch (Exception ex) { return(this.JsonResult(Utility.E_JsonResult.Error, "异常原因:" + ex.Message, null, null)); } return(this.JsonResult(Utility.E_JsonResult.OK, "修改权限成功~~~!", null, null)); }