Asp.Net Mvc終於等來了新版本,這次仍然是Preview版.該版本中加入了不少新特性.特別是在ViewEngine的管理上.得到了很大的改進,不僅讓用戶可以更方便的更換ViewEngine,而且還可以在一個系統中使用多個ViewEngine的可能得到了實現,本文將探索新版和老版中viewengine的工作方式並進行對比,然後演示如何添加一個或者多個ViewEngine並讓他們之間可以交互工作.
首先說明下P5對ViewEngine的改進,在老版本中,系統牽涉到ViewEngine管理的有兩個接口,分別是: IViewEngine, IViewLocator,其中IVewEngine負責呈現View,IViewLocator負責對View的路徑處理.同時,在Controller中對ViewEngine進行選擇,讓後在執行的時候將ViewEngine傳遞到ViewResult中,最後ViewResult使用ViewEngine來呈現ui.老版本的View部分大致類圖如下:
它的執行流程大致如下:MVC框架根據Routing數據找到對應的Controller,而Controller中將根據IViewLocate來初始化一個ViewEngine(IViewLocater一般用來做路徑選擇)然後執行Controller的Execute方法,該方法間接通過ControllerActionInvoker來執行Action,每個Action都會返回一個ActionResult對象,然後,它執行ActionResult的ExecuteResult方法.系統有很多種ActionResult,當該ActionResult為ViewResult的時候,Controller會將自身的ViewEngine傳遞你這個ViewResult,在ViewResult中再最終使用ViewEngine來呈現數據.