文章目录
概述
NopCommerce源码架构详解-Themes网站主题实现源码分析3。
内容
上面一篇文章重点介绍了一下ThemeContext和ThemeProvider。下面来结合具体的例子来看看主题的视图是怎么使用ThemeContext的,最后在页面显示是什么效果。
nop主题DefaultClean里面只有一个Head.cshtml视图,用于加载对应主题相关的样式和图片。

Head.cshtml内容下图:

var themeName = EngineContext.Current.Resolve().WorkingThemeName从IoC容器(Autofac)中获取对应组件(IThemeContext具体实现)并调用其属性WorkingThemeName。
在Nop.Web.Framework.DependencyRegistrar类中的Register方法可以看到如下代码,分别对IThemeProvider和IThemeContext进行了注册:
builder.RegisterType<ThemeProvider>().As<IThemeProvider>().InstancePerLifetimeScope(); builder.RegisterType<ThemeContext>().As<IThemeContext>().InstancePerLifetimeScope();
具体最终的页面html源码如下图:

对应主题为DefaultClean。