ASP.NET MVC 教程 - 理解MVC应用程执行过程(C#)

到基于MVC的ASP.NET Web应用的请求首先会被传递到UrlRoutingModule对象。这个对象是一个HTTP模块。这个模块将请求处理并且执行路由选择。UrlRoutingModule对象会选择符合当前请求的第一个路由对象(路由对象是一个实现了RouteBase的类,并且通常是Route类的实例)。如果没有找到匹配的路由对象,则UrlRoutingModule对象不做什么事情并且让请求退回到正常的ASP.NET或IIS请求处理过程。

从被选中的Route对象中,UrlRoutingModule对象获得与该Route对象相关的IRouteHandler对象。一般来说,在一个MVC应用中,这会是MvcRouteHandler的实例。该IRouteHandler实例创建一个IHttpHandler对象然后将它传递到IHttpContext对象。默认情况下,MVC的IHttpHanlder实例是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对象。

执行路由

UrlRoutingModule模块使用第一个匹配的在RouteTable集合里的Route对象来创建RouteDatea对象。接着UrlRoutingModule模块使用它来创建一个RequestContext(IHttpContext)对象。

建立MVC请求处理程序

MvcRouteHandler对象创建一个MvcHandlder类的实例,然后将它传送到RequestContext实例

建立控制器

MvcHandler对象使用RequestContext实例通过标识IControllerFactory对象(通常是DefautlControllerFactory类的实例)来创建控制器的实例。

执行控制器

MvcHandler实例调用控制器的Execute方法。

调用行为

大部分的控制器继承自Controller基类。对于继承自Controller基类的控制器,和该控制器相关的ControllerActionInvoker对象会决定该调用该控制器类的哪一个行为函数,并接着调用该函数。

执行结果

一个通常的行为函数可能接受用户输入,准备恰当的响应数据,然后通过返回一个结果类型来执行结果。可以被执行内置的结果类型包括:ViewResult(渲染一个视图,同时也是最常使用的结果类型),), RedirectToRouteResultRedirectResultContentResultJsonResult, and EmptyResult.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值