天天看點

asp.net MVC 的處理流程

之前把筆記都放在空間日志中隐藏起來,今天看到這句話:作為經常從網上索取免費資料的一員,要有回報的思想,也為了讓更多的人少走些彎路,想想自己不能這麼自私,是以把空間日志搬到部落格園來。閑話不說,直接開始。

 asp.net mvc 分為主要的controller 、action、以及views

下面來分析asp.net mvc的處理流程:

controller 負責将擷取model資料并将model傳遞個view對象,通知view對象顯示。

處理流程:

将routdata與httpcontext合并成為requestcontext傳遞到irouthandler接口,irouthandler接口的實作類mvcroutehandler接口到requestcontext參數,傳回一個mvchandler對象,并且為這個對象指派requestcontext

根據requestcontext參數解析出routedata以及httpcontext,根據routedata來查找出controller以及對象的action及其parameters

mvchandler對象根據工廠方法擷取到具體的controller---->controller.execute()--->釋放controller對象

這其中最主要的是mvchandler對象根據傳入的requestcontext參數來擷取到具體的controller,并執行其execute()方法

擷取action--->調用actionresult(abstract方法)的actionresult.executeresult()方法

擷取到iview對象,--》根據iview對象的頁面路徑擷取到具體的page,--->調用iview.renderview()方法顯示頁面

iview對象中存儲的是頁面的路徑位址,最終通過頁面引擎(view engine)使用該路徑生成具體的頁面類,viewpage(system.web.mvc.viewpage)是實作了iview接口的對象。

Viewpage.renderpartialview()   顯示.ascx檔案或者是viewpage.renderview() 顯示.aspx檔案。

現在mvc  3中使用的是razor視圖引擎,和webformviewengine一樣的處理流程

asp.net MVC 的處理流程