mvc的生命週期

 

儘管每次都是從msdn裏複製粘貼,可是仍是有必要的,加深對mvc的理解和官方的表述。java

瞭解 MVC 應用程序執行過程

發送給基於 ASP.NET MVC 的 Web 應用程序的請求首先經過 UrlRoutingModule 對象(一個 HTTP 模塊)進行傳遞。 此模塊將分析請求並執行路由選擇。 UrlRoutingModule 對象將選擇與當前請求匹配的第一個路由對象。 (路由對象是實現 RouteBase 的類,而且一般是Route 類的實例。)若是任何路由都不匹配,則 UrlRoutingModule 對象不執行任何操做,並容許請求回退到常規的 ASP.NET 或 IIS 請求處理流程。web

從選定的 Route 對象中,UrlRoutingModule 對象將得到一個對象,所得到的對象將實現 IRouteHandler 接口並與 Route 對象關聯。一般,在 MVC 應用程序中,這將是 MvcRouteHandler 類的一個實例。 MvcRouteHandler 實例將建立一個實現 IHttpHandler 接口的MvcHandler 對象。 而後,MvcHandle 對象會選擇將最終處理該請求的控制器。 有關更多信息,請參見 ASP.NET 路由json

 

注意:mvc

若是 ASP.NET MVC Web 應用程序運行在 IIS 7.0 中,則 MVC 項目不須要文件擴展名。 可是,在 IIS 6.0 中,處理程序要求將 .mvc 文件擴展名映射到 ASP.NET ISAPI DLL。app

UrlRoutingModule 和 MvcRouteHandler 類是 ASP.NET MVC 框架的入口點。 它們執行下列操做:框架

  • 選擇 MVC Web 應用程序中合適的控制器。ide

  • 獲取特定的控制器實例。ui

  • 調用該控制器的 Execute 方法。this

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

階段

詳細信息

接收對應用程序的第一個請求

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

執行路由

UrlRoutingModule 模塊使用 RouteTable 集合中第一個匹配的 Route 對象來建立 RouteData 對象,而後使用所建立的對象建立 RequestContext 對象。

建立 MVC 請求處理程序

MvcRouteHandler 對象將建立 MvcHandler 類的實例,並將 RequestContext 實例傳遞給處理程序。

建立控制器

MvcHandler 對象使用 RequestContext 實例標識用於建立控制器實例的 IControllerFactory 對象(一般是DefaultControllerFactory 類的實例)。

執行控制器

MvcHandler 實例調用控制器的 Execute 方法。

調用操做

對於從 ControllerBase 類繼承的控制器,與該控制器關聯的 ControllerActionInvoker 對象將決定要調用的 controller 類的操做方法,而後調用該方法。

執行結果

操做方法將接收用戶輸入,準備合適的響應數據,而後經過返回結果類型來執行結果。 可執行的內置結果類型包括:ViewResult(呈現視圖而且是最經常使用的結果類型)、RedirectToRouteResultRedirectResultContentResultJsonResultFileResult 和 EmptyResult

 

mvc的返回值:

mvc的返回類型:
       ActionResult 初始化 System.Web.Mvc.ActionResult 類的新實例。

       ViewResult    建立一個將視圖呈現給響應的 ViewResult 對象。
   
       ContentResult 表示用戶定義的內容類型,該類型是操做方法的結果。
       
       EmptyResult  表示一個不執行任何操做的結果,如不返回任何內容的控制器操做方法。

       HttpUnauthorizedResult 表示未經受權的 HTTP 請求的結果。

       JavaScriptResult 將javaScript內容發送到響應。

       JsonResult  表示一個類,該類用於將 JSON 格式的內容發送到響應。
       
       FileResult 表示一個用於將二進制文件內容發送到響應的基類。
       
       FileContentResult 將二進制文件的內容發送到響應。

       FilePathResult 將文件的內容發送到響應。

       FileStreamResult 使用 System.IO.Stream 實例將二進制內容發送到響應。

       RedirectResult  返回 System.Web.Mvc.RedirectResult 類的實例,其 Permanent 屬性設置爲 true。 url:要重定向到的 URL。

       RedirectToRouteResult 返回使用指定的路由名稱和路由值而且其 Permanent 屬性設置爲 true 的 RedirectResult 類的實例

       ViewResultBase 表示一個用於爲視圖提供模型並向響應呈現視圖的基類。

       PartialViewResult 表示一個用於將分部視圖發送到響應的基類。
相關文章
相關標籤/搜索