ABP框架系列之三十七:(Navigation-导航)
2018-01-16 14:47
477 查看
Every web application has some menu to navigate between pages/screens. ASP.NET Boilerplate provides a common ifrastructure to create and show menu to users.
每个Web应用程序都有一些菜单在页面/屏幕之间导航。ASP.NET提供了一个通用的ifrastructure样板文件创建和显示菜单的用户。
Assume that we have a main menu as shown below:
应用程序可以由不同的模块组成,每个模块都可以有自己的菜单项。定义菜单项,我们需要创建一个类派生navigationprovider。
假设我们有一个主菜单,如下所示:
Tasks
Reports
Administration
User management
Role management
Here, Administration menu item has two sub menu items. Example navigation provider class to create such a menu can be as below:
A MenuItemDefinition can basically have a unique name, a localizable display name, a url and an icon. Also,
一个menuitemdefinition基本上能有一个独特的名字,一个本地化的显示名称,URL和图标
A menu item may require a permission to show this menu to a particular user (See authorization document). requiredPermissionName property can be used in this case.
A menu item can be depend on a feature. featureDependency property can be used in this case.
A menu item can define a customData and order.
菜单项可能需要允许将菜单显示给特定用户(请参阅授权文档)。requiredpermissionname属性可以在这种情况下使用。
菜单项可以依赖于一个特性。FeatureDependency属性可以在这种情况下使用。
菜单项可以定义一个customdata和order。
INavigationProviderContext has methods to get existing menu items, add menus and menu items. Thus, different modules can add it's own items to the menu.
There may be one or more menus in an application. context.Manager.MainMenu references the default, main menu. We can create and add more menus using context.Manager.Menus property.
inavigationprovidercontext有方法让现有的菜单项,添加菜单和菜单项。因此,不同的模块可以将自己的项目添加到菜单中。
应用程序中可能有一个或多个菜单。context.manager.mainmenu引用默认的主菜单。我们可以创建和使用context.manager.menus属性添加更多的菜单。
ASP.NET Boilerplate automatically generates a javascript API to get menu and items in client side. Methods and objects under abp.nav namespace can be used for this purpose. For instance, abp.nav.menus.MainMenucan be used to get main menu of the application. Thus, we can create menu in client side.
ASP.NET Boilerplate templates uses this system to create and show menu to the user. Try to create a template and see source codes for more.
iusernavigationmanager可以注入,用得到的菜单项和显示给用户。因此,我们可以在服务器端创建菜单。
ASP.NET样板自动生成JavaScript API来获取客户端菜单项。在abp.nav命名空间对象和方法可用于这一目的。例如,abp.nav.menus.mainmenucan被用于获得应用程序主菜单。因此,我们可以在客户端创建菜单。
ASP.NET的模板模板使用本系统创建和显示菜单的用户。尝试创建一个模板并查看更多的源代码。
每个Web应用程序都有一些菜单在页面/屏幕之间导航。ASP.NET提供了一个通用的ifrastructure样板文件创建和显示菜单的用户。
Creating Menus
An application may be consists of different modules and each module can have it's own menu items. To define menu items, we need to create a class derived from NavigationProvider.Assume that we have a main menu as shown below:
应用程序可以由不同的模块组成,每个模块都可以有自己的菜单项。定义菜单项,我们需要创建一个类派生navigationprovider。
假设我们有一个主菜单,如下所示:
Tasks
Reports
Administration
User management
Role management
Here, Administration menu item has two sub menu items. Example navigation provider class to create such a menu can be as below:
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" ) ) ); } }
A MenuItemDefinition can basically have a unique name, a localizable display name, a url and an icon. Also,
一个menuitemdefinition基本上能有一个独特的名字,一个本地化的显示名称,URL和图标
A menu item may require a permission to show this menu to a particular user (See authorization document). requiredPermissionName property can be used in this case.
A menu item can be depend on a feature. featureDependency property can be used in this case.
A menu item can define a customData and order.
菜单项可能需要允许将菜单显示给特定用户(请参阅授权文档)。requiredpermissionname属性可以在这种情况下使用。
菜单项可以依赖于一个特性。FeatureDependency属性可以在这种情况下使用。
菜单项可以定义一个customdata和order。
INavigationProviderContext has methods to get existing menu items, add menus and menu items. Thus, different modules can add it's own items to the menu.
There may be one or more menus in an application. context.Manager.MainMenu references the default, main menu. We can create and add more menus using context.Manager.Menus property.
inavigationprovidercontext有方法让现有的菜单项,添加菜单和菜单项。因此,不同的模块可以将自己的项目添加到菜单中。
应用程序中可能有一个或多个菜单。context.manager.mainmenu引用默认的主菜单。我们可以创建和使用context.manager.menus属性添加更多的菜单。
Registering Navigation Provider
After creating the navigation provider, we should register it to ASP.NET Boilerplate configuration on PreInitialize event of our module:Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
Showing Menu
IUserNavigationManager can be injected and used to get menu items and show to the user. Thus, we can create menu in server side.ASP.NET Boilerplate automatically generates a javascript API to get menu and items in client side. Methods and objects under abp.nav namespace can be used for this purpose. For instance, abp.nav.menus.MainMenucan be used to get main menu of the application. Thus, we can create menu in client side.
ASP.NET Boilerplate templates uses this system to create and show menu to the user. Try to create a template and see source codes for more.
iusernavigationmanager可以注入,用得到的菜单项和显示给用户。因此,我们可以在服务器端创建菜单。
ASP.NET样板自动生成JavaScript API来获取客户端菜单项。在abp.nav命名空间对象和方法可用于这一目的。例如,abp.nav.menus.mainmenucan被用于获得应用程序主菜单。因此,我们可以在客户端创建菜单。
ASP.NET的模板模板使用本系统创建和显示菜单的用户。尝试创建一个模板并查看更多的源代码。
相关文章推荐
- Silverlight实例教程 - Navigation导航框架系列汇总
- Silverlight Navigation导航框架实例系列汇总
- ABP框架系列之三十:(Javascript-API-Javascript-API)
- ABP框架系列之五十二:(Validating-Data-Transfer-Objects-验证数据传输对象)
- ABP框架中导航菜单的使用及JavaScript API获取菜单的方法
- ABP(现代ASP.NET样板开发框架)系列之9、ABP设置管理
- Silverlight实例教程 - Navigation导航框架开篇
- ABP框架系列之七:(About-关于ABP)
- ABP框架系列之九:(Abp-Session-会话)
- DDD开发框架ABP之导航菜单
- [置顶]ABP框架系列总目录(持续更新)
- ABP框架系列之二十七:(Feature-Management-特征管理)
- ABP框架系列之三十一:(Localization-本地化)
- ABP框架系列之四十一:(Nuget-Packages-Nuget包)
- ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
- [置顶]ABP入门系列目录——学习Abp框架之实操演练
- ABP框架系列之一:(Entity-实体)
- Silverlight实例教程 - Navigation导航框架开篇 推荐
- hibernate中对象视图导航查询|加载策略---【小白系列】0基础到熟练应用hibernate框架(十四)
- Silverlight实例教程 - 3. 理解Navigation导航框架Page类