ASP.NET MVC是怎样实现自己的视图引擎的(2)_.Net教程
推荐:浅谈ASP.NET中使用AJAX的简单方法据我所知,这项技术最初是由Microsoft在1999年提出来的,也就是我们所熟知的使用远程调用(remote calls)的DHTML / JavaScript web应用程序.这项技术的核心就是通过浏览器发出一个异步的HTTP请求来调用服务端的网页或服务,在返回结果后,无需刷新就可以更
而ViewLocator则是实现了IViewLocator接口的。由于ViewLocator已经为了完成了全部的工作,这里我们只需修改下他的ViewLocationFormats 来使用我们自己的模板文件就可以了。
我们再来看一下类图,那就更加清楚了:
注:关于模板解析的部分代码这里就不说了,不在讨论范围内,可以自己下载代码来看。
现在我们基本完成了我们的视图引擎,那么如何让ASP.NET MVC不要使用默认的Web forms视图引擎,而使用我们自定义的视图引擎呢?
在ASP.NET MVC中,所有的请求都是通过一个工厂类来创建Controller实例的,这个工厂类必须实现IControllerFactory 接口。默认的实现该接口的工厂类是DefaultControllerFactory。这个工厂类就是我们修改默认的视图引擎为我们的视图引擎的入口点。为了方便,我们创建一个继承自DefaultControllerFactory的SimpleControllerFactory :
以下为引用的内容: public class SimpleControllerFactory : DefaultControllerFactory { protected override IController CreateController(RequestContext requestContext, string controllerName) { Controller controller = (Controller)base.CreateController (requestContext, controllerName); controller.ViewEngine = new SimpleViewEngine(); //修改默认的视图引擎为我们刚才创建的视图引擎 return controller; } } |
这里只要修改controller.ViewEngine为我们自定义的ViewEngine就可以了.最终的类图大概如下:
要使我们创建的控制器工厂类SimpleControllerFactory 成为默认的控制器工厂类,我们必须在Global.asax.cs中的Application_Start 事件中添加如下代码:
以下为引用的内容: ControllerBuilder.Current.SetControllerFactory(typeof(SimpleControllerFactory)); |
到这里,我们已经完成了我们自己的视图引擎。
在ASP.NET MVC中实现自定义的视图引擎是很简单的,难点在于模板的解析,具体大家可以研究MvcContrib中的四个视图引擎的代码。最近要对模板引擎进行研究,大家有什么其他优秀的、成熟的、开源的模板引擎,麻烦给小弟推荐一下,先谢了。
分享:解读ASP.NET编写应用程序的十大技巧1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。 .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用Visual Studio .NET作为
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-ASP.NET MVC是怎样实现自己的视图引擎的(2)。