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 表示一个用于将分部视图发送到响应的基类。
相关文章
相关标签/搜索