public JsonResult MakeMenu() { AjaxResult result = new AjaxResult(); var s = SysModule.InitPermission(); WebSYSMenuManager menuManager = new WebSYSMenuManager(); int i = menuManager.MakeMenu(s); result.data = i; return(Json(result)); }
public ActionResult MakeMenu2() { string str = ""; var ss = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Module.Name; int index = ss.LastIndexOf(".dll", StringComparison.OrdinalIgnoreCase); var allTypes = Assembly.Load(ss.Substring(0, index)).GetTypes(); var types = allTypes.Where(e => e.BaseType.Name == nameof(BaseController)); List <MenuItemAttribute> allMenus = new List <MenuItemAttribute>(); foreach (var type in types) { var members = type.GetMethods().Where(e => (e.ReturnType.BaseType != null && e.ReturnType.BaseType.Name == nameof(ActionResult)) || e.ReturnType.Name == nameof(ActionResult)).ToList(); { //二级菜单 foreach (var member in members) { var attrs = member.GetCustomAttributes(typeof(MenuItemAttribute), true); if (attrs.Length == 0) { continue; } MenuItemAttribute menuItem = attrs[0] as MenuItemAttribute; var aname = member.Name; var cname = member.DeclaringType.Name; cname = cname.Substring(0, cname.LastIndexOf("Controller")); menuItem.Url = string.Format("/{0}/{1}", cname, aname); menuItem.ReturnType = member.ReturnType.Name; menuItem.ItemKey = Encrypt.MD5Encrypt(menuItem.Url); menuItem.ItemPKey = ""; allMenus.Add(menuItem); } } } allMenus.ForEach(t => { if (t.IsMain != 1) { var pMenu = allMenus.FirstOrDefault(m => m.IsMain == 1 && m.MainName == t.MainName); if (pMenu != null) { t.ItemPKey = pMenu.ItemKey; } } }); var allNewMenus = allMenus.Where(m => m.IsMain == 1).ToList(); allNewMenus.ForEach(t => { t.SubPages.Add(t); t.SubPages.AddRange(allMenus.Where(m => m.ItemPKey == t.ItemKey).ToList()); }); WebSYSMenuManager _WebSYSMenuManager = new WebSYSMenuManager(); int r = _WebSYSMenuManager.MakeMenu2(allNewMenus); str += r.ToString() + "<br />"; //str += JsonHelper.Serializer(allNewMenus); return(Content(str)); }