知识大全 ASP.NET MVC实现我们自己的视图引擎[1]

Posted 视图

篇首语:入于污泥而不染不受资产阶级糖衣炮弹的侵蚀,是最难能可贵的革命品质。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC实现我们自己的视图引擎[1]相关的知识,希望对你有一定的参考价值。

ASP.NET MVC实现我们自己的视图引擎[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在ASP NET MVC的一个开源项目MvcContrib中 为我们提供了几个视图引擎 例如NVelocity Brail NHaml XSLT 那么如果我们想在ASP NET MVC中实现我们自己的一个视图引擎 我们应该要怎么做呢?

  我们知道呈现视图是在Controller中通过传递视图名和数据到RenderView()方法来实现的 好 我们就从这里下手 我们查看一下ASP NET MVC的源代码 看看RenderView()这个方法是如何实现的

protected virtual void RenderView(string viewName string masterName object viewData)            ViewContext viewContext = new ViewContext(ControllerContext viewName masterName viewData TempData);           ViewEngine RenderView(viewContext);//

  这是P 的源码 P 略有不同 原理差不多 从上面的代码我们可以看到 Controller中的RenderView()方法主要是将ControllerContext viewName masterName viewData TempData这一堆东西封装成ViewContext 然后把ViewContext传递给ViewEngine RenderView(viewContext) 嗯 没错 我们这里要实现的就是ViewEngine的RenderView()方法

  ASP NET MVC为我们提供了一个默认的视图引擎 这个视图引擎叫做 WebFormsViewEngine 从名字就可以看出 这个视图引擎是使用ASP NET web forms来呈现的 在这里 我们要实现的视图引擎所使用的模板用HTML文件吧 简单的模板示例代码如下

<!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN // w /TR/x /DTD/x transitional dtd >< xmlns= // w / /x >// w / /x ><head>    <title>自定义视图引擎示例</title></head><body>    <h >$ViewData Title</h >    <p>$ViewData Message</p>    <p>The following fruit is part of a string array: $ViewData FruitStrings[ ]</p>    <p>The following fruit is part of an object array: $ViewData FruitObjects[ ] Name</p>    <p>Here s an undefined variable: $UNDEFINED</p></body>< ml>

  下面马上开始我们的实现 首先 毫无疑问的 我们要创建一个ViewEngine 就命名为 SimpleViewEngine 吧 注意哦 ViewEngine要实现IViewEngine接口

public class SimpleViewEngine : IViewEngine            #region Private members         IViewLocator _viewLocator = null;         #endregion         #region IViewEngine Members : RenderView()         public void RenderView(ViewContext viewContext)                    string viewLocation = ViewLocator GetViewLocation                                 (viewContext viewContext ViewName);            if (string IsNullOrEmpty(viewLocation))                            throw new InvalidOperationException(string Format                    ( View could not be found                   viewContext ViewName));                        string viewPath = viewContext HttpContext Request MapPath(viewLocation);            string viewTemplate = File ReadAllText(viewPath);             //以下为模板解析            IRenderer renderer = new PrintRenderer();            viewTemplate = renderer Render(viewTemplate viewContext);             viewContext HttpContext Response Write(viewTemplate);                #endregion         #region Public properties : ViewLocator         public IViewLocator ViewLocator                    get                            if (this _viewLocator == null)                                    this _viewLocator = new SimpleViewLocator();                                return this _viewLocator;                        set                            this _viewLocator = value;                            #endregion    cha138/Article/program/net/201311/15013

相关参考

知识大全 ASP.NET MVC实现我们自己的视图引擎[2]

ASP.NETMVC实现我们自己的视图引擎[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET MVC实现我们自己的视图引擎[3]

ASP.NETMVC实现我们自己的视图引擎[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!De

知识大全 ASP.NET MVC实现自己的视图引擎

ASP.NETMVC实现自己的视图引擎  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 ASP.NET MVC Razor视图引擎攻略

ASP.NETMVCRazor视图引擎攻略  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引子&

知识大全 Asp.Net Mvc3 修改视图的默认路径

Asp.NetMvc3修改视图的默认路径  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 自己动手实现Asp.net的MVC框架

自己动手实现Asp.net的MVC框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  了解JAV

知识大全 ASP.NET MVC 1.0发布了

ASP.NETMVC1.0发布了  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNETMV

知识大全 ASP.NET服务器控件视图浅析

ASP.NET服务器控件视图浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET服务

知识大全 技术高手讲评ASP.NET MVC 1.0

技术高手讲评ASP.NETMVC1.0  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近正在考

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们