导航

每个Web应用程序都有某种菜单可以在页面/屏幕之间导航。ASP.NET Boilerplate提供了一个通用基础结构,用于为用户创建和显示菜单。

创建菜单

应用程序可能包含不同的  模块  ,每个模块可能都有自己的菜单项。要定义菜单项,我们需要创建一个派生自NavigationProvider的类。

想象一下,我们有一个主菜单,如下所示:

“管理”菜单项有两个子菜单项。这是一个创建这样一个菜单的导航提供程序类:

public class SimpleTaskSystemNavigationProvider : NavigationProvider
{
    public override void SetNavigation(INavigationProviderContext context)
    {
        context.Manager.MainMenu
            .AddItem(
                new MenuItemDefinition(
                    "Tasks",
                    new LocalizableString("Tasks", "SimpleTaskSystem"),
                    url: "/Tasks",
                    icon: "fa fa-tasks"
                    )
            ).AddItem(
                new MenuItemDefinition(
                    "Reports",
                    new LocalizableString("Reports", "SimpleTaskSystem"),
                    url: "/Reports",
                    icon: "fa fa-bar-chart"
                    )
            ).AddItem(
                new MenuItemDefinition(
                    "Administration",
                    new LocalizableString("Administration", "SimpleTaskSystem"),
                    icon: "fa fa-cogs"
                    ).AddItem(
                        new MenuItemDefinition(
                            "UserManagement",
                            new LocalizableString("UserManagement", "SimpleTaskSystem"),
                            url: "/Administration/Users",
                            icon: "fa fa-users",
                            requiredPermissionName: "SimpleTaskSystem.Permissions.UserManagement"
                            )
                    ).AddItem(
                        new MenuItemDefinition(
                            "RoleManagement",
                            new LocalizableString("RoleManagement", "SimpleTaskSystem"),
                            url: "/Administration/Roles",
                            icon: "fa fa-star",
                            requiredPermissionName: "SimpleTaskSystem.Permissions.RoleManagement"
                            )
                    )
            );
    }
}

MenuItemDefinition基本上可以具有唯一的名称,可本地化的显示名称,URL和图标。也:

INavigationProviderContext具有获取现有菜单项,添加菜单和编辑菜单项的方法。这样,不同的模块可以将自己的项目添加到菜单中。

应用程序中可能有一个或多个菜单。context.Manager.MainMenu引用默认主菜单。我们可以使用context.Manager.Menus属性创建和添加更多菜单。

注册导航提供程序

创建导航提供程序后,我们需要在模块的PreInitialize方法上将其注册到ASP.NET Boilerplate的配置  

Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>(); 

显示菜单

可以注入 IUserNavigationManager   并用于获取菜单项并将其显示给用户。这样,我们就可以在服务器端创建一个菜单。

ASP.NET Boilerplate自动生成JavaScript API以获取客户端的菜单和项目。abp.nav命名空间下的方法和对象可用于此目的。例如,abp.nav.menus.MainMenu可用于获取应用程序的主菜单。这样,我们就可以在客户端创建菜单。

ASP.NET Boilerplate  模板  使用此系统为用户创建和显示菜单。创建模板并查看源代码以获取更多信息。

nidie.com.cn - 用心与你沟通