Ejemplo n.º 1
0
        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
            }));
        }
Ejemplo n.º 2
0
        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));
        }