知识大全 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.NETMVC实现自己的视图引擎 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
ASP.NETMVCRazor视图引擎攻略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 引子&
Asp.NetMvc3修改视图的默认路径 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
自己动手实现Asp.net的MVC框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 了解JAV
ASP.NETMVC1.0发布了 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNETMV
ASP.NET服务器控件视图浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET服务
技术高手讲评ASP.NETMVC1.0 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近正在考
知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]
ASP.NETMVC4框架揭秘:ControllerFactory[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们