public ActionResult GetMenuTree() { //1. get user's menu type permissions from session var menuList = OperationContext.CurrentUserPermissions.FindAll(o => o.permissionOperationType == 1 && o.permissionIsShow == true); //2. convert menu permisison to treeNode //2.1 create root node EasyUIModel_MenuTreeNode rootNode = OperationContext.ServiceSession.PermissionService.Get(o => o.permissionParentID == 0).SingleOrDefault().ToMenuTreeNode(); //2.2 get all child node by id rootNode.children = GetChildNodes(menuList, rootNode.id); var jsSerializer = new JavaScriptSerializer(); var rootNodeInJs = jsSerializer.Serialize(rootNode); return(Content("[" + rootNodeInJs + "]")); }
/// <summary> /// generate child nodes /// </summary> /// <param name="listPer"></param> /// <param name="parentId"></param> /// <returns></returns> List <EasyUIModel_MenuTreeNode> GetChildNodes(List <Permission> listPer, int parentId) { List <EasyUIModel_MenuTreeNode> childNodes = null; foreach (Permission per in listPer) { if (per.permissionParentID == parentId) { if (childNodes == null) { childNodes = new List <EasyUIModel_MenuTreeNode>(); } EasyUIModel_MenuTreeNode childNode = per.ToMenuTreeNode(); childNodes.Add(childNode); childNode.children = GetChildNodes(listPer, childNode.id); } } return(childNodes); }