ASP.NET mvcnovember,第二十,2007
如果我們聽到的消息是真的,那麼新的ASP.NET MVC框架將是最可定製和可擴展的Web開發平臺,微軟曾運。
如果你想充分利用這個優勢,或者如果你只是想明白點什麼,你會想打開蓋,檢查發動機。
管道
免責聲明:此信息是基於pre-ctp1樣本代碼,所以它可能是過時的或只是簡單的錯誤。我會更新這個職位和圖當公衆CTP是運。
0。應用程序初始化
在應用程序啓動時,像任何ASP.NET應用程序,它運行的全球。application_start() ASAX的方法。
在該方法中,你可以添加對象到staticroutetable路線。路線收藏(它的類型是RouteCollection)。這些將被檢查以後,每個接收請求。每個路由對象定義一個URL模式將匹配和控制器被用來在這種情況下。或者,您可以指定一個動作控制器和一個customiroutehandler如果你不想使用默認的(這是mvcroutehandler)。
如果你實現一個自定義IControllerFactory(例如,如果你使用控制容器,一個第三方的逆像溫莎城堡),你可以把這個作爲主動控制器工廠指派它到system.web.mvc.controllerfactory.instance財產。
1。路由
概述:路由是符合ihttphandlers傳入請求的URL模式獨立組件。mvchandler,本身,一個IHttpHandler,作爲一種替代其他ihttphandlers配置路由表。
引用的system.web.mvc.mvchandler andsystem.web.mvc.urlroutingmodule在Web.config給處理所有傳入的請求mvchandler責任相結合。
首先,mvchandler調用路線。在application_start()添加getroutedata(),比賽路線的對象列表的請求。適當的路由選擇和製備aroutedata對象。本文引用必須適當的iroutehandler和IController。
其次,在iroutehandler的gethttphandler()被調用時,返回一個IHttpHandler,whoseprocessrequest()方法最終調用。默認bymvcroutehandler IHttpHandler返回,再次,mvchandler,執行以下步驟2-4。
scottgu提供此路由過程的另一個觀點。
2。實例化和執行控制器
概述:主動IControllerFactory供應IController實例
mvchandler的processrequest()方法callscontrollerfactory。實例。createcontroller(),通過上下文信息,包括獲得的RouteData對象讀取先前控制器類型。
主動IControllerFactory負責實例化並返回一個適當的IController。通常,這將是控制器基類的子類。
execute() IController的方法被稱爲。如果這是控制器的一個子類,步驟3和4以下進行。
3。定位和調用動作控制器
概述:控制器調用相應的操作方法,並經過進一步的加工,稱renderview()
控制器。execute()方法使用routedata和其他上下文信息,選擇適當的操作方法。這種方法必須有一個【controlleraction ]屬性可以選擇。它也映射傳入的請求(QueryString參數等,形成從ihttprequest上下文對象)到該動作方法的參數列表。
控制器調用自己的invokeaction()方法,通過詳細的選擇的操作方法,其中,可以預見的是,調用動作方法。這是您的代碼並運行。