public static void load(IHtmlHelper htmlHelper, ClaimsPrincipal User) { var _user = Newtonsoft.Json.JsonConvert.DeserializeObject <SysUserView>(User.Identities.First(u => u.IsAuthenticated).FindFirst(ClaimTypes.UserData).Value); if (_user.UserType == UserType.SuperUser) { htmlHelper.ViewContext.FormContext.FormData["IsAdmin"] = true; } else { var _role = _user.userrole.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(s => Convert.ToInt64(s)).ToList(); if (htmlHelper.ViewContext.RouteData.Values.ContainsKey("controller") && htmlHelper.ViewContext.RouteData.Values["controller"] != null && htmlHelper.ViewContext.RouteData.Values["controller"].ToString() == "CompanyObject") { htmlHelper.ViewContext.FormContext.FormData["button_Import"] = false; } //判断是否存在控制器和方法 string controller = ""; string action = ""; string area = ""; if (IsRouteDataKeys(htmlHelper.ViewContext.RouteData, ref area, ref controller, ref action)) { //q =>this.UserID, "/" + controller + "/", RoleIDs); var rolebtn = new SysRoleButtonDAL().Query((s) => _role.Contains(s.RoleId)).list.Select(s => s.ButtonId).ToList(); var showbtns = new SysMenuButtonDAL().Query(s => s.Menu.MenuUrl.IndexOf(area + "/" + controller + "/" + action) != -1 && rolebtn.Contains(s.Id)); foreach (SysMenuButton item in showbtns.list) { if (item.Category == (int)SysModuleButtonCategory.ToolbarButton) { SetPurviewViewData(htmlHelper, item.ButtonCode, "button_"); } else if (item.Category == (int)SysModuleButtonCategory.ListButton) { SetPurviewViewData(htmlHelper, item.ButtonCode, "list_"); } else if (item.Category == (int)SysModuleButtonCategory.GeneralButton) { SetPurviewViewData(htmlHelper, item.ButtonCode, "button_"); SetPurviewViewData(htmlHelper, item.ButtonCode, "list_"); } } } } }
public async Task <ActionResult> GetTree(long id, int type = 1) { //已授权的角色菜单 var roleMenus = await SysRoleMenuDAL.QueryUserRole(u => u.RoleId == Convert.ToInt32(id), null, null); var roleButtons = await SysRoleButtonDAL.QueryAsync(u => u.RoleId == Convert.ToInt32(id), null, null); //所有状态为有效的菜单 (List <SysMenu> list, long count)menus = await SysMenuDAL.QueryAsync(w => w.Status == 1); var lists = menus.list.Select(s => { var btns = s.SysMenuButtons ?? new List <SysMenuButton>(); var newBtns = btns.Select(b => new TreeNode { id = b.Id.ToString(), name = b.ButtonCode, title = b.ButtonName, ischecked = roleButtons.list.Exists(e => e.ButtonId == b.Id) }).ToList(); var strbtns = Newtonsoft.Json.JsonConvert.SerializeObject(newBtns); return(new SysMenuTreeNode { ischecked = roleMenus.list.Exists(ss => ss.MenuId == s.Id), name = s.MenuName, title = s.MenuName, pid = (s.ParentID ?? 0).ToString(), id = s.Id.ToString(), //buttons = newBtns, jsonButtons = strbtns }); }).ToList(); return(Json(lists)); }