1 整体框架的定义实现
0051 AreaNames
NopCommonStartup类,该类设置一个常量,该常量指定了保存后台相关操作实现文件夹的名称。
0052 BaseAdminController、HomeController、CustomerRoleController
BaseAdminController类,通过[Area(AreaNames.Admin)]标记把Web/Areas注入到Web层中,从而保证浏览器对后台页面的正常显示。
注意
.NetCore框架还可以通过services.Configure<RazorViewEngineOptions>内置依赖注入方法来实现把Web/Areas注入到Web层中,但第一种方法的实现更为简单、快捷和灵活,所以nopCommerce开发者和微软中的示例都把一种方法作为主要实现方法。
HomeController类,继承于BaseAdminController类,保证浏览器对后台主页面的正常显示。
CustomerRoleController类,继承于BaseAdminController类,保证浏览器对后台客户角色页面的正常显示
- 重构Nop.Web.Infrastructure.RouteProvider.RegisterRoutes方法。
- 定义Nop.Web\Areas\Admin\Views\Shared\_MenuItem.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\Shared\Menu.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\Shared\_AdminLayout.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\_ViewStart.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\_ViewImports.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\Home\Index.cshtml,Razo页面。
- 定义Nop.Web\Areas\Admin\Views\CustomerRole\List.cshtml,Razo页面。
- 按F5执行程序,程序正常运行所有后台页面后,菜单栏正常显示。
对以上功能更为具体实现和注释见21-08-18_Nop_4.40.3(017_Areas整体框架的定义实现)。
2 左侧菜单的定义实现
- 定义Nop.Web\Areas\Admin\ sitemap.config。
0053 CustomerController
CustomerController类,继承于BaseAdminController类,保证浏览器对后台客户页面的正常显示。
- 定义Nop.Web\Areas\Admin\Views\Customer\List.cshtml,Razo页面。
- 重构Nop.Web\Areas\Admin\Views\Shared\Menu.cshtml,Razo页面。
0054 SiteMapNode、XmlSiteMap、Extensions
SiteMapNode类,一个站点地图节点类,通过该实体类及其属性成员实现当前程序与Razo页面菜单栏之间的数据交互操作
XmlSiteMap类,一个Xml站点地图类,通过该类把一个指定文件(在整个nopCommerce程序中特指:"~/Areas/Admin/sitemap.config")中的数据值对站点地图节点实例,进行初始化/实例化操作。
注意:
为了简化实现,注释掉了该类中的一些定义,在下一个示例中会去掉该类中关于权限定义的注释。
Extensions类,一个扩展类,该类通过对系统名称字符串的检索,为Razo页面菜单栏中指定菜单及其父菜单以高亮状态进行显示提供支撑。
0055 IPageHeadBuilder、PageHeadBuilder、LayoutExtensions
PageHeadBuilder类,继承于IPageHeadBuilder接口,一个页面头生成器类,通过该类实现当前程序与Razo页面头标签之间的数据交互操作。
LayoutExtensions类,一个布局扩展类,通过该类实现在Razo页面中,以页面控件的形式来实例化一个指定类,为当前程序与Razo页面头标签之间的数据交互操作,提供相应的通道。
注意:
为了简化实现,这两类中大量的实现方法被删除,只保留了一些关于菜单的定义实现方法。
4、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar.Register方法添加语句:
//通过.NetCore框架依赖注入容器实例的指定API方法,对页面头生成器具体实现类进行依赖注入操作。
services.AddScoped<IPageHeadBuilder, PageHeadBuilder>();
- 重构Nop.Web\Areas\Admin\Views\_ViewImports.cshtml,Razo页面。
- 重构Nop.Web\Areas\Admin\Views\Home\Index.cshtml,Razo页面。
- 重构Nop.Web\Areas\Admin\Views\CustomerRole\List.cshtml,Razo页面。
- 重构Nop.Web\Areas\Admin\Views\Shared\_MenuItem.cshtml,Razo页面。
- 按F5执行程序,程序正常运行所有后台页面后,菜单栏正常显示。
对以上功能更为具体实现和注释见21-08-20_Nop_4.40.3(018_Areas左侧菜单栏的定义实现)。