欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET MVC:实现我们自己的视图引擎】,下面是详细的分享!
ASP.NET MVC:实现我们自己的视图引擎
在ASP.NET MVC的一个开源项目MvcContrib中,为我们提供了几个视图引擎,例如NVelocity, Brail, NHaml, XSLT。那么如果我们想在ASP.NET MVC中实现我们自己的一个视图引擎,我们应该要怎么做呢?
我们知道呈现视图是在Controller中通过传递视图名和数据到RenderView()方法来实现的。好,我们就从这里下手。我们查看一下ASP.NET MVC的源代码,看看RenderView()这个方法是如何实现的:
|
以下为引用的内容: protected virtual void RenderView(string viewName, string |
这是P2的源码,P3略有不同,原理差不多,从上面的代码我们可以看到,Controller中的RenderView()方法主要是将ControllerContext, viewName, masterName, viewData, TempData这一堆东西封装成ViewContext,然后把ViewContext传递给ViewEngine.RenderView(viewContext)。嗯,没错,我们这里要实现的就是ViewEngine的RenderView()方法。
ASP.NET MVC为我们提供了一个默认的视图引擎,这个视图引擎叫做:WebFormsViewEngine. 从名字就可以看出,这个视图引擎是使用ASP.NET web forms来呈现的。在这里,我们要实现的视图引擎所使用的模板用HTML文件吧,简单的模板示例代码如下:
|
以下为引用的内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
下面马上开始我们的实现。首先,毫无疑问的,我们要创建一个ViewEngine,就命名为 SimpleViewEngine 吧,注意哦,ViewEngine要实现IViewEngine接口:
|
以下为引用的内容: public class SimpleViewEngine : IViewEngine IViewLocator _viewLocator=null; #endregion #region IViewEngine Members : RenderView() public void RenderView(ViewContext viewContext) string viewPath=viewContext.HttpContext.Request.MapPath(viewLocation); //以下为模板解析 viewContext.HttpContext.Response.Write(viewTemplate); #endregion #region Public properties : ViewLocator public IViewLocator ViewLocator #endregion |
在这里实现了IViewEngine接口提供的RenderView()方法,这里要提供一个ViewLocator的属性。ViewLocator的主要就是根据控制器中传来的视图名,进行视图的定位。在RenderView()方法中首先获取视图的路径,然后把视图模板读进来,最后进行模板的解析然后输出。
我们再来看一下ViewLocator是如何实现的。他是IViewLocator类型的,也就是说SimpleViewLocator实现了IViewLocator接口。SimpleViewLocator的实现代码如下:
|
我们的SimpleViewLocator 是继承自ASP.NET MVC的ViewLocator类,而ViewLocator则是实现了IViewLocator接口的。由于ViewLocator已经为了完成了全部的工作,这里我们只需修改下他的ViewLocationFormats 来使用我们自己的模板文件就可以了。
我们再来看一下类图,那就更加清楚了:

|
这里只要修改controller.ViewEngine为我们自定义的ViewEngine就可以了.最终的类图大概如下:

以上所分享的是关于ASP.NET MVC:实现我们自己的视图引擎,下面是编辑为你推荐的有价值的用户互动:
相关问题:ASP.NET中MVC的理解
答:MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 MVC模式最早由Trygve Reenskaug在1974年[1]提出,是施乐帕罗奥多研究中心(Xerox PARC)... >>详细
相关问题:求翻译高手
答:剃须刀是响应一个请求的大多数建议收到的ASPNET MVC功能团队——提供一个干净的、轻量级的简单的视图引擎,不包含“句法繁琐”包含在现有的Web表单的视图... >>详细
相关问题:MVC2,MVC3,MVC4和MVC5的不同
答:MVC3 需要.net framework 4.0 版本. 支持多视图引擎 在 ASP.NET MVC3 中,增加视图的对话框中允许你选择你希望的视图引擎,在新建项目对话框中,你可以指定项目默认的视图引擎,可以选择 WebForm,Razor,或者开源的视图引擎,例如:Spark, NHam... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
