4、看源码MVC Controller如何调用Action

Controller继承ControllrBase,ControllerBase继承IController,而IController里只有一个Execute方法
1、ControllrBase里的Execute(),里面调用了ExecuteCore(),而ExecuteCore()是个抽象方法,抽象方法是在子类Controller里实现的

4、看源码MVC Controller如何调用Action_第1张图片

 2、抽象方法ExecuteCore()是在子类Controller里实现的,而调用Action是this.ActionInvoker.InvokeAction

4、看源码MVC Controller如何调用Action_第2张图片

3、ControllerActionInvoker里的InvokeAction,而InvokeAction方法里的InvokeActionMethodWithFilters才是真正调用方法的

4、看源码MVC Controller如何调用Action_第3张图片

4、InvokeActionMethodWithFilters方法返回ActionExecutedContext

4、看源码MVC Controller如何调用Action_第4张图片

5、然后再执行InvokeActionResultWithFilters

4、看源码MVC Controller如何调用Action_第5张图片

6、InvokeActionResultWithFilters里在调用this.InvokeActionResultFilterRecursive

4、看源码MVC Controller如何调用Action_第6张图片

4、看源码MVC Controller如何调用Action_第7张图片

 7、InvokeActionResult里最终会调用ExecuteResult

4、看源码MVC Controller如何调用Action_第8张图片

 

你可能感兴趣的:(4、看源码MVC Controller如何调用Action)