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)
。