日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

ASP.NET MVC是怎樣實現(xiàn)自己的視圖引擎的(2)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:淺談ASP.NET中使用AJAX的簡單方法
據(jù)我所知,這項技術最初是由Microsoft在1999年提出來的,也就是我們所熟知的使用遠程調(diào)用(remote calls)的DHTML / JavaScript web應用程序.這項技術的核心就是通過瀏覽器發(fā)出一個異步的HTTP請求來調(diào)用服務端的網(wǎng)頁或服務,在返回結(jié)果后,無需刷新就可以更

而ViewLocator則是實現(xiàn)了IViewLocator接口的。由于ViewLocator已經(jīng)為了完成了全部的工作,這里我們只需修改下他的ViewLocationFormats 來使用我們自己的模板文件就可以了。

我們再來看一下類圖,那就更加清楚了:

注:關于模板解析的部分代碼這里就不說了,不在討論范圍內(nèi),可以自己下載代碼來看。

現(xiàn)在我們基本完成了我們的視圖引擎,那么如何讓ASP.NET MVC不要使用默認的Web forms視圖引擎,而使用我們自定義的視圖引擎呢?

在ASP.NET MVC中,所有的請求都是通過一個工廠類來創(chuàng)建Controller實例的,這個工廠類必須實現(xiàn)IControllerFactory 接口。默認的實現(xiàn)該接口的工廠類是DefaultControllerFactory。這個工廠類就是我們修改默認的視圖引擎為我們的視圖引擎的入口點。為了方便,我們創(chuàng)建一個繼承自DefaultControllerFactory的SimpleControllerFactory :

以下為引用的內(nèi)容:
public class SimpleControllerFactory : DefaultControllerFactory
{
protected override IController CreateController(RequestContext
requestContext, string controllerName)
{
Controller controller = (Controller)base.CreateController
(requestContext, controllerName);
controller.ViewEngine = new SimpleViewEngine();
//修改默認的視圖引擎為我們剛才創(chuàng)建的視圖引擎
return controller;
}
}

這里只要修改controller.ViewEngine為我們自定義的ViewEngine就可以了.最終的類圖大概如下:

要使我們創(chuàng)建的控制器工廠類SimpleControllerFactory 成為默認的控制器工廠類,我們必須在Global.asax.cs中的Application_Start 事件中添加如下代碼:

以下為引用的內(nèi)容:
ControllerBuilder.Current.SetControllerFactory(typeof(SimpleControllerFactory));

到這里,我們已經(jīng)完成了我們自己的視圖引擎。

在ASP.NET MVC中實現(xiàn)自定義的視圖引擎是很簡單的,難點在于模板的解析,具體大家可以研究MvcContrib中的四個視圖引擎的代碼。最近要對模板引擎進行研究,大家有什么其他優(yōu)秀的、成熟的、開源的模板引擎,麻煩給小弟推薦一下,先謝了。

分享:解讀ASP.NET編寫應用程序的十大技巧
1、在使用Visual Studio .NET時,除直接或非引用的對象外,不要使用缺省的名字。 .NET帶來的好處之一是所有的源代碼和配置文件都是純文本文件,能夠使用Notepad或WordPad等任意的文本編輯器進行編輯。如果不愿意,我們并非一定要使用Visual Studio .NET作為

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:.Net教程/更新時間:2009-06-27
相關.Net教程