理解ASP.NET MVC執行過程

來源:互聯網
上載者:User

向基於ASP.NET MVC的Web程式發送請求首先傳遞一個 UrlRoutingModule 對象,這是一個HTTP模組。這個模組解析請求並執行路由選擇。 UrlRoutingModule 對象選擇第一個匹配當前請求的路由對象。(路由對象是實現 RouteBase 的類,而且通常是 Route 類的一個執行個體。) 如果沒有任何路由匹配, UrlRoutingModule 對象就啥都不做,讓請求回到通常的ASP.NET或IIS請求處理中。

由選擇的 Route 對象,  UrlRoutingModule 對象擷取由Route 分隔的 IRouteHandler 對象。在MVC程式中這通常會是一個 MvcRouteHandler的執行個體。  IRouteHandler 執行個體建立一個 IHttpHandler 對象並將它傳到IHttpContext 對象。預設情況下,用於MVC的 IHttpHandler 執行個體是 MvcHandler 對象。 MvcHandler 對象進而選擇最終處理常式的控制器。

注意:
當ASP.NET MVC Web 程式運行在 IIS 7.0下時, MVC項目不要求檔案名稱擴充。然而,在 IIS 6.0下,需要映射.mvc檔案名稱擴充到ASP.NET ISAPI DLL。

模組與處理常式是 ASP.NET MVC 架構的進入點。它們執行以下操作:

  • 在MVC Web程式中選擇適合的控制器。
  • 擷取指定的控制器執行個體。
  • 調用控制器的 Execute 方法。

下表列出了MVC Web項目執行的階段。

階段 詳細
接收程式的第一個請求

在 Global.asax 檔案中, Route 對象被添加到 RouteTable 對象中。

執行路由(routing) UrlRoutingModule 模組使用RouteTable 集合中第一個匹配的 Route 對象來建立 RouteData 對象, 然後它建立一個 RequestContext (IHttpContext) 對象。
建立MVC請求處理常式 MvcRouteHandler 對象建立 MvcHandler 類的一個執行個體並傳遞 RequestContext 執行個體。
建立控制器 MvcHandler 對象使用 RequestContext 執行個體來識別 IControllerFactory 對象(通常是一個 DefaultControllerFactory 類的執行個體) 以建立控制器執行個體。
執行控制器 MvcHandler 執行個體調用控制器的 Execute 方法。
叫用作業(action) 大多數控制器繼承自 Controller 基類。因此,與控制分隔的 ControllerActionInvoker 對象決定調用哪個控制器的action方法並調用之。
執行結果 通常的action方法會接收使用者輸入,準備適當的響應資料,然後返回結果類型來執行結果。可以執行的內建類型包括: ViewResult (呈現視圖,最常用的結果類型), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, 和EmptyResult.
原文地址:http://www.asp.net/learn/mvc/tutorial-22-cs.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.