Example #1
0
        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));
        }
Example #2
0
        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));
        }