项目是前后端分离,所以只写接口
ENTITY层:
public class VM_Menu { public string ID { get; set; } public string MenuCode { get; set; } public string MenuDesc { get; set; } public string MenuURL { get; set; } public string ParentMenuID { get; set; } public Nullable<int> Sequence { get; set; } public string CreateUserID { get; set; } public Nullable<System.DateTime> CreateDate { get; set; } public string UpdateUserID { get; set; } public Nullable<System.DateTime> UpdateDate { get; set; } public string MenuIcon { get; set; } //添加子级菜单 public object ChildMenu { get; set; } }
BLL层:
/// <summary> /// 获取菜单树结构 /// </summary> /// <returns></returns> public List<VM_Menu> GetMenuTree() { var allMenuList = GetMenu().ToList(); List<VM_Menu> rootNodeList = new List<VM_Menu>(); foreach (var parentNodeList in allMenuList.Where(t => t.ParentMenuID == null)) { VM_Menu menuNode = new VM_Menu(); menuNode.ID = parentNodeList.ID; menuNode.MenuCode = parentNodeList.MenuCode; menuNode.MenuDesc = parentNodeList.MenuDesc; menuNode.MenuURL = parentNodeList.MenuURL; menuNode.ParentMenuID = parentNodeList.ParentMenuID; menuNode.Sequence = parentNodeList.Sequence; menuNode.CreateUserID = parentNodeList.CreateUserID; menuNode.CreateDate = parentNodeList.CreateDate; menuNode.UpdateUserID = parentNodeList.UpdateUserID; menuNode.UpdateDate = parentNodeList.UpdateDate; menuNode.MenuIcon = parentNodeList.MenuIcon; menuNode.ChildMenu = CreateChildTree(allMenuList, menuNode); rootNodeList.Add(menuNode); } return rootNodeList; } /// <summary> /// 递归生成子树 /// </summary> /// <param name="AllMenuList"></param> /// <param name="vmMenu"></param> /// <returns></returns> private List<VM_Menu> CreateChildTree(List<AM_MENU> AllMenuList, VM_Menu vmMenu) { string parentMenuID = vmMenu.ID;//根节点ID List<VM_Menu> nodeList = new List<VM_Menu>(); var children = AllMenuList.Where(t => t.ParentMenuID == parentMenuID); foreach (var chl in children) { VM_Menu node = new VM_Menu(); node.ID = chl.ID; node.MenuCode = chl.MenuCode; node.MenuDesc = chl.MenuDesc; node.MenuURL = chl.MenuURL; node.ParentMenuID = chl.ParentMenuID; node.Sequence = chl.Sequence; node.CreateUserID = chl.CreateUserID; node.CreateDate = chl.CreateDate; node.UpdateUserID = chl.UpdateUserID; node.UpdateDate = chl.UpdateDate; node.MenuIcon = chl.MenuIcon; node.ChildMenu = CreateChildTree(AllMenuList, node); nodeList.Add(node); } return nodeList; }
View层:
/// <summary> /// 获取菜单树结构 /// </summary> /// <returns></returns> public HttpResponseMessage GetMenuTree() { List<VM_Menu> list = b_authority.GetMenuTree(); return PageHelper.GetPageList(list); }