Beispiel #1
0
        /// <summary>
        /// 获取用户所拥有的菜单
        /// </summary>
        /// <param name="cityId"></param>
        /// <param name="userName"></param>
        /// <param name="companyId"></param>
        /// <returns></returns>
        public static List <WebMenuClass> GetNowUserMenu(int cityId, string userName, int companyId)
        {
            List <WebMenuClass> baseList = new List <WebMenuClass>();

            WebMenuClass[] lists = new WebMenuClass[BaseMenu.Count()];
            BaseMenu.CopyTo(lists);
            baseList = lists.ToList();
            //获取当前用户在数据库中拥有的菜单
            IList <SYSMenu> roleMenuList = SYSMenuManager.GetSYSMenuPageByUserNameAndCompanyIdAndCityId(userName, companyId, cityId);

            if (roleMenuList == null || roleMenuList.Count < 1)
            {
                return(new List <WebMenuClass>());
            }
            List <string> urlList = roleMenuList.Select(_obj => _obj.URL.ToLower()).ToList();
            //从页面展示菜单中过滤出当前用户拥有的一级菜单
            List <WebMenuClass> userList = baseList.Where(obj =>
                                                          urlList.Contains(obj.PageKey.ToLower())
                                                          ||
                                                          (obj.ChildrenMenus != null && obj.ChildrenMenus.Where(obj2 => urlList.Contains(obj2.PageKey.ToLower())).Count() > 0)
                                                          ).ToList();

            //从页面展示菜单中过滤出当前用户拥有的二级菜单
            foreach (WebMenuClass obj in userList)
            {
                if (obj.ChildrenMenus != null && obj.ChildrenMenus.Count > 0)
                {
                    List <WebMenuClass> _clist = obj.ChildrenMenus.Where(_obj => urlList.Contains(_obj.PageKey.ToLower())).ToList();
                    obj.ChildrenMenus = _clist;
                }
            }
            return(userList);
        }
Beispiel #2
0
        static List <WebMenuClass> GetBaseMenu()
        {
            List <WebMenuClass> list = new List <WebMenuClass>();
            XmlDocument         doc  = new XmlDocument();

            doc.Load(HttpContext.Current.Server.MapPath("/Menu.xml"));
            XmlNodeList menuItems = doc.SelectSingleNode("menu").ChildNodes;

            foreach (XmlNode v in menuItems)
            {
                int          index   = Convert.ToInt32(v.SelectSingleNode("index").InnerText);
                string       name    = v.SelectSingleNode("name").InnerText;
                string       url     = v.SelectSingleNode("url").InnerText;
                string       icon    = v.SelectSingleNode("icon").InnerText;
                string       pagekey = v.SelectSingleNode("pagekey").InnerText;
                WebMenuClass menuObj = new WebMenuClass {
                    Index = index, Name = name, Icon = icon, Url = url, PageKey = pagekey
                };
                if (v.SelectSingleNode("childrenmenuitem") != null)
                {
                    List <WebMenuClass> _list = new List <WebMenuClass>();
                    foreach (XmlNode v2 in v.SelectSingleNode("childrenmenuitem").ChildNodes)
                    {
                        int          index2   = Convert.ToInt32(v2.SelectSingleNode("index").InnerText);
                        string       name2    = v2.SelectSingleNode("name").InnerText;
                        string       url2     = v2.SelectSingleNode("url").InnerText;
                        string       icon2    = v2.SelectSingleNode("icon").InnerText;
                        string       pagekey2 = v2.SelectSingleNode("pagekey").InnerText;
                        WebMenuClass menuObj2 = new WebMenuClass {
                            Index = index2, Name = name2, Icon = icon2, Url = url2, PageKey = pagekey2
                        };
                        _list.Add(menuObj2);
                    }
                    menuObj.ChildrenMenus = _list;
                }
                list.Add(menuObj);
            }
            return(list);
        }