100 NopMediaDefaults、NopRoxyFilemanDefault、IRoxyFilemanService、BaseRoxyFilemanService、FileRoxyFilemanService、RoxyFilemanProvider、IPictureService、PictureService、ThemeableViewLocationExpander
NopMediaDefaults类,通过该类及其属性成员,设定缩略图片的存放位置及其缓存键字符串常量,为缩略图片缓存项(键/值对)的构建提供数据支撑。
NopRoxyFilemanDefault类,从“\Nop.Web\wwwroot\lib\Roxy_Fileman”目录中,获取该目录指定的静态文件的数据为当前程序中的本地化操作提供数据支撑。
IRoxyFilemanService接口,该接口用于对当前程序中Roxy_Fileman目录中的文件夹或文件,获取或新建配置、验证和持久化存储默认实例数据;执行移动、删除和图片的剪切等操作。
BaseRoxyFilemanService抽象类,该类用于对当前程序中Roxy_Fileman目录中的文件夹或文件,获取或新建配置、验证和持久化存储默认实例数据等操作。
FileRoxyFilemanService类,继承于IRoxyFilemanService接口和BaseRoxyFilemanService抽象类,该类用于对当前程序中Roxy_Fileman目录中的文件夹或文件,执行移动、删除和图片的剪切等操作。
RoxyFilemanProvider类,该类用于获取Roxy_Fileman目录在服务器端磁盘的位置。
IPictureService接口,继承于该接口的具体实现类,实现对产品图片的持久化存储、删除、和URL数据的获取等操作,为产品图片在页面中的显示提供数据支撑。
PictureService类,继承于IPictureService接口,该类实现对产品图片的持久化存储、删除、和URL数据的获取等操作,为产品图片在页面中的显示提供数据支撑。
ThemeableViewLocationExpander接口,把默认MVC布局页面多个映射规则字符串,替换为主题插件MVC布局页面多个映射规则字符串,并把这些替换后的映射规则字符串存储到枚举数实例中。
1、去除对Nop.Web.Framework.Infrastructure.Extensions.ServiceCollectionExtensions.AddThemes方法的注释。
2、去除对Nop.Web.Framework.Infrastructure.Extensions.ApplicationBuilderExtensions.UseNopStaticFiles方法的注释。
3、重构Nop.Web.Framework.Infrastructure.NopCommonStartup.ConfigureServices方法下列语句的注释。
//把自定义的主题插件依赖注入中间件,注入到.NetCore框架内置依赖注入容器实例中。
services.AddThemes();
4、重构Nop.Web.Framework.Infrastructure.NopCommonStartup.Configure方法下列语句的注释。
//把自定义(主题)插件管道中间件,集成(安装)到.NetCore框架内置管道实例中。
application.UseNopStaticFiles();
5、重构\Nop.Web\Views\_ViewImports.cshtml页面,定义下列语句:
@using Nop.Web.Framework.UI
6、重构\Nop.Web\Views\_ViewStart.cshtml页面,定义下列语句:
@{
Layout = "_ColumnsOne";
}
7、重构\Nop.Web\Views\Shared\_Root.Head.cshtml页面,注释掉该页面中没有被定义的组件。
@* 通过\Nop.Web\Themes\DefaultClean\Views\Shared\Head.cshtml文件,添加相应静态样式文件(styles.rtl.css、styles.css、jquery-ui.min.css),使用前台页面展示时显示相应的样式*@
@await Html.PartialAsync("Head")
8、重构\Nop.Web\Views\Shared\_Root.cshtml页面,注释掉该页面中没有被定义的组件。
9、重构\Nop.Web\Views\Shared\_ColumnsOne.cshtml页面,注释掉该页面中没有被定义的组件。
10、重构\Nop.Web\Views\Customer\Login.cshtml页面,注释掉下列语句:
@*
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}*@
如果不注释掉上列语句就会出现异常:“nvalidOperationException: The following sections have been defined but have not been rendered by the page at '/Views/Shared/_ColumnsOne.cshtml': 'Scripts'. To ignore an unrendered section call IgnoreSection("sectionName").”
还有别一种解决方案:
在\Nop.Web\Views\Shared\_ColumnsOne.cshtml页面中添加语句:
@await RenderSectionAsync("Scripts", required: false)
即多重布局页面的使用,必须全部使用多重布局规则,添加其它分布页面,而不能使用@section Scripts,添加其它分布页面,否则就会出现在程序执行时出现上述异常。
11、按F5执行程序,在数据库安装操作完成后,再次按F5执行程序,前台主页已经集成了默认主题插件的样式,且本地化登录/注销组件已经能够正常被执行。
对以上功能更为具体实现和注释22-03-03-030_Nop_4.40.4(默认主题插件与前台布局页面的集成)。