NopCommerce架构分析之(七)主题Theme皮肤管理器_自学过程

IThemeContext:皮肤上下文,支持桌面皮肤和移动段皮肤。其实体类为:ThemeContext;

IThemeProvider:皮肤提供者,其实体类为ThemeProvider;皮肤提供者从皮肤配置文件中解析配置项,加载系统提供的所有皮肤方案,系统默认提供桌面干净皮肤(~/Themes/DefaultClean)和移动端皮肤(~/Themes/Mobile)。ThemeConfiguration是对theme.config数据的解析对象。

IThemeContext从IThemeProvider中获取解析的配置方案。

上节我们讲到自定义视图引擎,从视图引擎的名字(ThemeableRazorViewEngine)上可以知晓,它实现了对皮肤的自动加载功能。

视图引擎从IThemeContext中获取当前的皮肤,并解析加载。

时间: 2024-09-20 07:55:16

NopCommerce架构分析之(七)主题Theme皮肤管理器_自学过程的相关文章

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架构分析之(五)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架构分析之(三)EntityFramework数据库初试化及数据操作_自学过程

系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvider,SqlCeDataProvider:获取数据连接工厂,不同类型数据库,连接工厂不同. 接口IStartupTask的实体类EfStartUpTask的实现如下: public class EfStartUpTask : IStartupTask { public void Execute() {

《解剖PetShop》之一:PetShop的系统架构设计_自学过程

前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来.这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注.然而PetShop随着版本的不断更新,至现在基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又很多可以借鉴之处.PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念.本系列试图对

在ASP.NET 2.0中操作数据之五十七:在分层架构中缓存数据_自学过程

导言: 正如前面章节所言,缓存ObjectDataSource的数据只需要简单的设置一些属性.然而,它是在表现层对数据缓存,这就与ASP.NET page页面缓存策略(caching policies)紧密的耦合(tightly couples)起来.我们对体系机构分层的原因之一便是打破这种耦合.拿业务逻辑层为例,将业务逻辑从ASP.NET页面脱离出来:而数据访问层将数据访问的细节ASP.NET页面脱离出来.从某种意义来说,将业务逻辑和数据访问细节脱离出来是首先,这样的话使系统更易读.易维护.易

ASP.NET MVC4入门教程(七):给电影表和模型添加新字段_自学过程

在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题. (由

基于.NET平台的分层架构实战(七-外一篇)—对数据访问层第一种实现(Access+

基于.NET平台的分层架构实战(七-外一篇)-对数据访问层第一种实现(Access+SQL)的重构 昨天的文章基于.NET平台的分层架构实战(七)--数据访问层的第一种实现:Access+SQL发布后,很多朋友对我的程序提出了意见和建议,在这里先谢谢你们!!!尤其是金色海洋(jyk),对我的程序提出了很多建设性的意见. 我大体总结了一下,昨天程序的主要缺点有: 1.Connection对象没有关闭 2.DataReader对象没有关闭 3.相似代码太多,造成代码冗余. 其中第一点问题,目前还没有