一.MvcHandler——Controller——Action
先用反编译工具看看MvcHandler的内部:

先说明一下,MvcHandler是继承自IHttpHandler的,先看一下IHttpHandler这个接口:

顺藤摸瓜,进到MvcHandler:

再看ProcessRequestInit方法:

从上面看出,ProcessRequestInit方法是控制器实例的创建,上面是MvcHandler——Controller的实现过程。
下面介绍Controller——Action。回到RrocessRequest方法,接下来它执行了Execute方法

找Execute方法,但此方法不是在Controller类中,不是因为写错了,其实它在父类ControllerBase类中。看Execute方法:

ExecuteCore():






总结一下:
先找控制器和方法上面写的特性,如果存在这个特性,则调用其中的方法,如果调用的结果错了, 则跳到指定的页面或者相应的处理;如果通过了,就顺序执行特性,这就是AOP。画个图形就是这样的:

routedata里面是什么呢?

本文详细解析了MVC框架中的MvcHandler处理流程,从控制器实例化到Action执行,再到View的生成。讲解了Controller如何通过ExecuteCore()调用Action,以及ViewResult如何生成cshtml页面。此外,探讨了View的扩展,如根据客户端类型返回不同视图,并介绍了MVC应用程序的生命周期,包括路由、Action调用和View渲染的全过程。
4万+

被折叠的 条评论
为什么被折叠?



