NopCommerce架构分析之(七)主题Theme皮肤管理器
IThemeContext:皮肤上下文,支持桌面皮肤和移动段皮肤。其实体类为:ThemeContext;
IThemeProvider:皮肤提供者,其实体类为ThemeProvider;皮肤提供者从皮肤配置文件中解析配置项,加载系统提供的所有皮肤方案,系统默认提供桌面干净皮肤(~/Themes/DefaultClean)和移动端皮肤(~/Themes/Mobile)。ThemeConfiguration是对theme.config数据的解析对象。
IThemeContext从IThemeProvider中获取解析的配置方案。
上节我们讲到自定义视图引擎,从视图引擎的名字(ThemeableRazorViewEngine)上可以知晓,它实现了对皮肤的自动加载功能。
视图引擎从IThemeContext中获取当前的皮肤,并解析加载。
相关推荐
-
NopCommerce架构分析之(五)Model绑定Action参数
asp.net MVC中Action参数不只是一些基本类型,也支持实体参数.那么从客户端传来的数据如何映射或转换成实体对象呢?就是通过实体绑定类ModelBinder.此系列类在请求转化为后台Controller的Action方法前,捕获传递过来的数据,并对其进行解析和转换,最终为实体类对象. 在系统启动前,Global.asax.cs中的方法Application_Start方法调用下面代码定义参数转换规则. //model binders ModelBinders.Binders.Add(t
-
NopCommerce架构分析(一)Autofac依赖注入类生成容器
NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac.据有人测试,Autofac是性能很好的IOC工具. 1.在IOC中,组件首先需要在IOC中注册,有通过配置文件注册的.像Spring.net,也有通过特性注册的,像StructureMap,也有通过代理来注册的,像Autofac.但是IOC讲究一个原则,就是接口和实现分离.所有IOC就是生命某个具体类实现了某个接口.然后在使用时,系统从IOC中获取接口的实现类,并创建对象. 2.下面来看NopCommerce如
-
NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage
系统中对Razor的支持包括两部分,其中之一就是自定义RazorViewEngine 一.自定义RazorViewEngine 在Global.asax.cs的Application_Start方法中,注册了自定义视图引擎: //remove all view engines ViewEngines.Engines.Clear(); //except the themeable razor view engine we use ViewEngines.Engines.Add(new Themea
-
NopCommerce架构分析之(三)EntityFramework数据库初试化及数据操作
系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvider,SqlCeDataProvider:获取数据连接工厂,不同类型数据库,连接工厂不同. 接口IStartupTask的实体类EfStartUpTask的实现如下: public class EfStartUpTask : IStartupTask { public void Execute() {
-
使用Nopcommerce为商城添加满XX减XX优惠券功能
公司的电商网站要做个优惠券的功能,nop框架,但我接触nop时间不多,最后还是为了功能而完成了.这中间肯定有很多小问题. Nopcommerce自带的促销功能感觉不是很好,首先优惠券功能放在购物车页面的,如果直接下单就用不了优惠.其次nop的优惠还必须要输入优惠券码很麻烦,最后不满足现在电商主流的单笔订单满XX减XX优惠券功能.但是nop提供了很多基础的方法,我们只要稍作更改就可以达到我们想要的. 优惠券首先需要和用户挂钩,用户可以领取和查看自己的优惠券.优惠券的功能nop基本已经实现了,但是没
-
基于nopCommerce的开发框架 附源码
.NET的开发人员应该都知道这个大名鼎鼎的高质量b2c开源项目-nopCommerce,基于EntityFramework和MVC开发,拥有透明且结构良好的解决方案,同时结合了开源和商业软件的最佳特性.官网地址:http://www.nopcommerce.com/,中文网:http://www.nopcn.com/.下载后前后端展示如下.如果你还未了解过该项目,建议从官网下载代码后在本地运行查看效果. 笔者使用该框架开发过不少项目,总的来说,方便简洁,集成了.NET开发许多常用的组件和功能.一
-
NopCommerce架构分析之(八)多语言支持
系统支持的语言是有类:Language表示: 多语言资源对应的类为:LocalizedProperty: 当先选择某种语言存储在类中:GenericAttribute: 多语言可以导出为XML文件,当然也支持导出. IWorkContext及其实体类WebWorkContext为当前运行上下文:用户的登录信息以及一些上下文环境设置都保存在此类中. 具体包括:当前用户信息:CurrentCustomer:当前用户Cookie:货币:语言:税的类型:供应商等: 展现多语言资源的方式有几种: 一.在自
-
NopCommerce架构分析之(四)基于路由实现灵活的插件机制
NopCommerce支持灵活的插件机制,所谓Web系统插件,其实也就是可以像原系统的一部分一样使用. Web系统的使用方式就是客户端发送一个请求,服务端进行解析.在asp.net MVC中对客户请求的解析是通过路由的方式实现的. 所谓路由就是在客户端发生请求时,对请求路径的解析过程. 在Global.asax.cs中注册所有路由类: //register custom routes (plugins, etc) var routePublisher = EngineContext.Curren
-
NopCommerce架构分析之(七)主题Theme皮肤管理器
IThemeContext:皮肤上下文,支持桌面皮肤和移动段皮肤.其实体类为:ThemeContext; IThemeProvider:皮肤提供者,其实体类为ThemeProvider;皮肤提供者从皮肤配置文件中解析配置项,加载系统提供的所有皮肤方案,系统默认提供桌面干净皮肤(~/Themes/DefaultClean)和移动端皮肤(~/Themes/Mobile).ThemeConfiguration是对theme.config数据的解析对象. IThemeContext从IThemeProv
-
分析Android多主题颜色的相关问题
如果您通过以下的代码来获取定义的颜色值 context.getResources().getColor(R.color.some_color_resource_id); 在 Android Studio 中会有一个 lint 警告,提示您 Resources#getColor(int) 在 Marshmallow 中被废弃了,建议使用主题可知的 Resources#getColor(int, Theme) 函数. 为了避免该警告,则可以使用 ContextCompat: ContextCompa
-
Yii2创建多界面主题(Theme)的方法
本文实例讲述了Yii2创建多界面主题(Theme)的方法.分享给大家供大家参考,具体如下: Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方: 1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理: 2. 视图文件和Web资源在目录上做了分离(在应用程序模板中,分别对应于views和web目录) 以高级应用程序模板为例, 首先在frontend/views和frontend/web目录下分别创建一个themes/{your theme
-
Android中应用界面主题Theme使用方法和页面定时跳转应用
主题Theme就是用来设置界面UI风格,可以设置整个应用或者某个活动Activity的界面风格.在Android SDK中内置了下面的Theme,可以按标题栏Title Bar和状态栏Status Bar是否可见来分类: 复制代码 代码如下: android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式 android:theme="@android:style/Theme.NoTitleBar"
随机推荐
- 正则表达式对qq号码校验
- Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法
- javascript bind绑定函数代码
- 用Java代码实现栈数据结构的基本方法归纳
- asp.net下cookies的丢失和中文乱码
- asp.net批量多选文件上传解决方案
- MySQL5.7.10 安装文档教程详解
- Linux中Oracle的sqlplus下退格和Del键无效的问题解决
- js与jquery中获取当前鼠标的x、y坐标位置的代码
- 一种JavaScript的设计模式
- 用ADSL免代理共享上网
- 使用Google工具栏追踪 Blog 留言
- PSPad从入门到精通(PSPad Inside)[
- linux服务器下配置多tomcat实现实例
- C语言构建动态数组完整实例
- JavaScript实现QQ列表展开收缩扩展功能
- Android静默安装实现方案 仿360手机助手秒装和智能安装功能
- Mysql 8 新特性 window functions 的作用
- Python设计模式之门面模式简单示例
- c#使用IMap收取163邮件的方法示例