Example #1
0
        public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
        {
            var returnValue = new List<DynamicNode>();

            try
            {
                //using (var uow = new MyDBContext())
                using (var menuService = new SmMenuService<SysMenu>())
                {
                    // 取出所有Menu項
                    var menus = menuService.GetAll().ToList();


                    foreach (var menu in menus)
                    {
                        
                        DynamicNode dynamicNode = new DynamicNode()
                        {
                            Title = menu.Name,
                            ParentKey = menu.ParentId.HasValue ? menu.ParentId.Value.ToString() : "",
                            Key = menu.SysMenuId.ToString(),
                            Action = menu.Action,
                            Controller = menu.Controller,
                            Area = menu.Area,
                            Url = menu.Url,
                            //Roles = roles
                        };

                        if (!string.IsNullOrWhiteSpace(menu.RouteValues))
                        {
                            dynamicNode.RouteValues = menu.RouteValues.Split(',').Select(value => value.Split('='))
                                                .ToDictionary(pair => pair[0], pair => (object)pair[1]);

                        }
                        returnValue.Add(dynamicNode);
                    }
                }

                return returnValue;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        public override IEnumerable <DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
        {
            var         returnValue = new List <DynamicNode>();
            CultureEnum cultureEnum = this.getCurrentCulture();

            try
            {
                using (var menuService = new SmMenuService <SmMenu>(new SmDbContext()))
                    using (var roleMenuService = new SmRoleMenuService <SmRoleMenu>(new SmDbContext()))
                    {
                        // 取出所有Menu項
                        var menus = menuService.GetAll().ToList();

                        //LogUtility.Logger.Debug($"The number of menus are {roleMenus.Count()}");
                        foreach (var menu in menus)
                        {
                            //取出該Menu對應那些Roles
                            IList <String> roles = roleMenuService.Get(x => x.SmMenuId == menu.SmMenuId).ToList().Select(x => x.SmRole.Name).ToList();


                            DynamicNode dynamicNode = new DynamicNode()
                            {
                                // 顯示的文字
                                //Title = menu.Name,
                                Title = this.getLocalizeTitle(menu, cultureEnum),
                                // 父Menu項目Id
                                ParentKey = menu.ParentId.HasValue ? menu.ParentId.Value.ToString() : "",
                                // Node key
                                Key = menu.SmMenuId.ToString(),
                                // Action name
                                Action = menu.Action,
                                // Controller name
                                Controller = menu.Controller,
                                // Area name
                                Area = menu.Area,
                                // Url (只要有值就會以此為主)
                                Url = menu.Url,
                                // Roles
                                Roles = roles
                            };

                            if (!string.IsNullOrWhiteSpace(menu.RouteValues))
                            {
                                var keyVals =
                                    Serializer.FromJson <List <KeyValuePair <String, String> > >(menu.RouteValues);
                                dynamicNode.RouteValues = keyVals.ToDictionary(x => x.Key, x => (object)x.Value);
                            }

                            returnValue.Add(dynamicNode);
                        }
                    }


                LogUtility.Logger.Debug($"Node數量 = {returnValue.Count}!");

                return(returnValue);
            }
            catch (Exception ex)
            {
                LogUtility.Logger.Error(ex, ex.Message);
                return(null);
            }
        }