ASP.NET mvcnovember,第二十,2007
如果我们听到的消息是真的,那么新的ASP.NET MVC框架将是最可定制和可扩展的Web开发平台,微软曾运。
如果你想充分利用这个优势,或者如果你只是想明白点什么,你会想打开盖,检查发动机。
管道
免责声明:此信息是基于pre-ctp1样本代码,所以它可能是过时的或只是简单的错误。我会更新这个职位和图当公众CTP是运。
0。应用程序初始化
在应用程序启动时,像任何ASP.NET应用程序,它运行的全球。application_start() ASAX的方法。
在该方法中,你可以添加对象到staticroutetable路线。路线收藏(它的类型是RouteCollection)。这些将被检查以后,每个接收请求。每个路由对象定义一个URL模式将匹配和控制器被用来在这种情况下。或者,您可以指定一个动作控制器和一个customiroutehandler如果你不想使用默认的(这是mvcroutehandler)。
如果你实现一个自定义IControllerFactory(例如,如果你使用控制容器,一个第三方的逆像温莎城堡),你可以把这个作为主动控制器工厂指派它到system.web.mvc.controllerfactory.instance财产。
1。路由
概述:路由是符合ihttphandlers传入请求的URL模式独立组件。mvchandler,本身,一个IHttpHandler,作为一种替代其他ihttphandlers配置路由表。
引用的system.web.mvc.mvchandler andsystem.web.mvc.urlroutingmodule在Web.config给处理所有传入的请求mvchandler责任相结合。
首先,mvchandler调用路线。在application_start()添加getroutedata(),比赛路线的对象列表的请求。适当的路由选择和制备aroutedata对象。本文引用必须适当的iroutehandler和IController。
其次,在iroutehandler的gethttphandler()被调用时,返回一个IHttpHandler,whoseprocessrequest()方法最终调用。默认bymvcroutehandler IHttpHandler返回,再次,mvchandler,执行以下步骤2-4。
scottgu提供此路由过程的另一个观点。
2。实例化和执行控制器
概述:主动IControllerFactory供应IController实例
mvchandler的processrequest()方法callscontrollerfactory。实例。createcontroller(),通过上下文信息,包括获得的RouteData对象读取先前控制器类型。
主动IControllerFactory负责实例化并返回一个适当的IController。通常,这将是控制器基类的子类。
execute() IController的方法被称为。如果这是控制器的一个子类,步骤3和4以下进行。
3。定位和调用动作控制器
概述:控制器调用相应的操作方法,并经过进一步的加工,称renderview()
控制器。execute()方法使用routedata和其他上下文信息,选择适当的操作方法。这种方法必须有一个【controlleraction ]属性可以选择。它也映射传入的请求(QueryString参数等,形成从ihttprequest上下文对象)到该动作方法的参数列表。
控制器调用自己的invokeaction()方法,通过详细的选择的操作方法,其中,可以预见的是,调用动作方法。这是您的代码并运行。