.NET MVC執行過程 及 生命周期步驟


  1、網址路由比對

2、執行Controller與Action

3、執行View並返回結果

 

 

  1. Request 請求到來
  2. IIS 根據請求特征將處理權移交給 ASP.NET
  3. UrlRoutingModule將當前請求在 Route Table中進行匹配
  4. UrlRoutingModuleRouteCollection中查找Request匹配的RouteHandler,默認是MvcRouteHandler MvcRouteHandler 創建 MvcHandler實例.
  5.  MvcHandler執行 ProcessRequest.
  6.  MvcHandler 使用 IControllerFactory 獲得實現了IController接口的實例,找到對應的HomeController
  7.  根據Request觸發HomeControllerIndex方法
  8. Index將執行結果存放在ViewData
  9. HomeControllerIndex方法返回 ActionResult
  10. Views/Home/Index.aspx ViewData呈現在頁面上
  11. Index.aspx執行ProcessRequest方法
  12. Index.aspx執行Render方法 輸出到客戶端

 

在使用MVC中是由IgnoreRoute()輔助方法對比成功的,會導致程序直接跳離MVC的執行生命周期,將程序繼續執行的權利交回給IIS,由IIS決定接下來應該由哪個模塊或哪個處理例程(Handler)來執行。

階段

詳細

接收應用程序的第一次請求

在Global.asax文件中, Route對象 被添加到RouteTable對象.

執行路由選擇

UrlRoutingModule 模塊使用第一個在RouteTable 集合中匹配的Route 對象來創建RouteData對象, 然后它將使用這個RouteData對象來創建RequestContext (IHttpContext)對象.

創建MVC request handler

MvcRouteHandler 創建MvcHandler類的一個實例,並且將它傳遞給RequestContext實例.

創建controller

MvcHandler對象使用RequestContext實例來確認IControllerFactory 對象(DefaultControllerFactory類的一個實例) ,以用來創建conteoller實例。

執行controller

MvcHandler 實例調用controller的執行method.

調用action

大部分controllers 繼承自Controller基礎類. 與controller相關聯的ControllerActionInvoker 對象決定這個controller類的哪個方法將被調用 , 然后再調用那個方法.

執行result

大部分controllers 繼承自Controller基礎類. 與controller相關聯的ControllerActionInvoker 對象決定這個controller類的哪個方法將被調用 , 然后再調用那個方法.

 

 

 

生命周期步驟概覽

當我們對ASP.NET MVC網站發出一個請求的時候,會發生5個主要步驟:

步驟1:創建RouteTable

當ASP.NET應用程序第一次啟動的時候才會發生第一步。RouteTable把URL映射到Handler。

步驟2:UrlRoutingModule攔截請求

第二步在我們發起請求的時候發生。UrlRoutingModule攔截了每一個請求並且創建和執行合適的Handler。

步驟3:執行MvcHandler

MvcHandler創建了控制器,並且把控制器傳入ControllerContext,然后執行控制器。

步驟4:執行控制器

控制器檢測要執行的控制器方法,構建參數列表並且執行方法。

步驟5:調用RenderView方法

大多數情況下,控制器方法調用RenderView()來把內容呈現回瀏覽器。

Controller.RenderView()方法把這個工作委托給某個ViewEngine來做。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM