ASP.NET MVC是怎样实现自己的视图引擎的(2)_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:浅谈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作为

共2页上一页12下一页
来源:模板无忧//所属分类:.Net教程/更新时间:2009-06-27
相关.Net教程