43149

1、MVC如何实例化控制器?

我们知道MVC请求进来,然后路由匹配,然后找到控制器和Action,最后会调用Action方法,但是大家想想控制器是个普通的类,Action是个普通的实例方法,要想调用Action必须先实例化控制器,那么MVC中如何实例化控制器的呢?

1、MVC请求进来会先进入到UrlRoutingHandler里的ProcessRequest

 2、然后进入到MVCHandler里的ProcessRequest

3、MVCHandler里的ProcessRequestInit,在这里面实例化控制器

1、string requiredString = this.RequestContext.RouteData.GetRequiredString("controller");路由匹配之后产生的结果集RouteData,得到requiredString字符串,requiredString是个完整类型名称

2、ControllerBuilder.GetControllerFactory();得到默认的控制工厂DefaultControllerFactory,然后通过DefaultControllerFactory的CreateController方法利用反射去创建Controller实例

来源:博客园

作者:David.Meng

链接:https://www.cnblogs.com/menglin2010/archive/2019/08/28/11425705.html

Recommend