首页 > 脚本 > 网络编程 > IOC工具框架Autofac中的开发案例教程六,NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage

IOC工具框架Autofac中的开发案例教程六,NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage

来源:整理 时间:2022-03-09 11:40:12 编辑:飘云 手机版

IOC工具框架Autofac中的开发案例教程六,NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage,nopCommerce是基于Microsoft的ASP.NETCore框架和MSSQLServer2012后端数据库的开源电子商务平台。它提供目录前端和管理工具后端,从而允许创建购物车。它可在nopCommerce公共许可证V3下获得,并于2008年10月面向中小型企业正式推出。VirtualPathProviderViewEngine寻找页面的时候,具体从哪些路径下进行寻找其实是根据该类中的这三个属性来决定的:MasterLocationFormats、ViewLocationFormats、PartialViewLocationFormats,修改这三个属性可以给我们的视图引擎分配自定义的搜索路径和文件格式。

系统中对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 ThemeableRazorViewEngine());

ThemeableRazorViewEngine继承ThemeableBuildManagerViewEngine,

ThemeableBuildManagerViewEngine继承ThemeableVirtualPathProviderViewEngine

ThemeableVirtualPathProviderViewEngine继承VirtualPathProviderViewEngine,达到对虚拟路径解析的目的。

说到ASP.NET MVC中的视图引擎(ViewEngine),就不得不说IView和IViewEngine这两个接口,要实现自定义的视图引擎就必须要实现这两个接口:

IView接口:IView是对MVC结构中View对象的抽象,此接口只有一个方法:void Render(ViewContext viewContext, TextWriter writer);Render方法将页面HTML写入到Writer中供浏览器显示;

IViewEngine接口:IViewEngine接口的职责是寻找View对象,编写自己的视图引擎时可以继承自IViewEngine并重写该类的FindView和FindPartialView方法,这两个方法返回一个ViewEngineResult表示搜索结果。

ASP.NET MVC提供了两个实现了IViewEngine接口的类:VirtualPathProviderViewEngine和WebFormViewEngine。VirtualPathProviderViewEngine类实现了FindView和FindPartialView这两个方法,用于根据指定的路径和格式来搜索页面文件,并且提供了Cache机制来缓存数据(由于使用的是ASP.NET Cache,依赖于HttpContext,所以无法在WebService或WCF项目中使用)。

VirtualPathProviderViewEngine寻找页面的时候,具体从哪些路径下进行寻找其实是根据该类中的这三个属性来决定的:MasterLocationFormats、ViewLocationFormats、PartialViewLocationFormats,修改这三个属性可以给我们的视图引擎分配自定义的搜索路径和文件格式。

二、自定义类WebViewPage<TModel>

此类表示呈现使用ASP.NET Razor语法的视图所需的属性和方法。

所以每一个视图都应该继承此类。但是我们在项目中是看不到此继承的,默认情况下Razor会让视图继承自System.Web.Mvc.WebViewPage<TModel>基类。也可以通过修改视图目录(每一个asp.net mvc项目下面都有一个~/Views/目录)下的web.config文件来更改默认基类,NopCommerce就是使用此方法实现自定义WebViewPage类的。除此之外也可以在视图文件中引入命名空间,但这种方法比较繁琐,除非一个项目中有个别视图需要自定义WebViewPage。
IOC工具框架Autofac中的开发案例教程六,NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage相关文章内容介绍

文章TAG:NopCommerceMicrosoftRazorViewEngineWebViewPage

最近更新

网络编程最新文章

脚本排行榜推荐