如何在宁静中创建动态菜单?

时间:2017-08-28 14:09:09

标签: c# angularjs

我正在尝试为Dashboards制作动态菜单, 我有一个Dashboards注册表,它只有一个描述和链接。 注册后,它必须出现在菜单中。

我的新菜单页面将包含一个框架,用于在新页面中打开此链接。

有一种简单的方法可以改变菜单的宁静吗?有这种行为吗?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我已经改变了NavigationModel.cs

经过搜索很多,没有找到任何这样做的例子。

我已经创建了DynamicNavigation这样的内容:

 public class DynamicDashboards : INavigationItemSource
    {
        public List<NavigationItemAttribute> GetItems()
        {
            var items = new List<NavigationItemAttribute>
            {
                new NavigationMenuAttribute(1000, "Dashboards", "icon-speedometer")
            };

            using (var connection = SqlConnections.NewByKey("Default"))
            {
                var dashboards = connection.List<DashboardsRow>();
                foreach (var dashboard in dashboards)
                    items.Add(new NavigationLinkAttribute(1000,
                        path: "Dashboards/" + dashboard.Descricao.Replace("/", "//"),
                        url: "~/Dashboards/DefaultDashboard?link=" + dashboard.Link,
                        permission: CadastrosPermissionKeys.General,
                        icon: "icon-speedometer"));
            }

            return items;
        }
    }

他们NavigationModel.cs,我正在调用此类,将其插入Items

    var dy = new DynamicDashboards();
    var dashboardMenu = NavigationHelper.ConvertToNavigationItems(NavigationHelper.ByCategory(dy.GetItems()), x => x != null && x.StartsWith("~/") ? VirtualPathUtility.ToAbsolute(x) : x);
    Items[0] = dashboardMenu[0]

在我的情况下,我在仪表板中有一个默认菜单,所以我只是在位置[0]上再次添加它,你可以按照你想要的方式操作它。