Controller繼承ControllrBase,ControllerBase繼承IController,而IController里只有一個Execute方法 1、ControllrBase里的Execute(),裡面調用了ExecuteCore(),而ExecuteCore()是個抽象方法,抽象 ...
Controller繼承ControllrBase,ControllerBase繼承IController,而IController里只有一個Execute方法
1、ControllrBase里的Execute(),裡面調用了ExecuteCore(),而ExecuteCore()是個抽象方法,抽象方法是在子類Controller里實現的
2、抽象方法ExecuteCore()是在子類Controller里實現的,而調用Action是this.ActionInvoker.InvokeAction
3、ControllerActionInvoker里的InvokeAction,而InvokeAction方法里的InvokeActionMethodWithFilters才是真正調用方法的
4、InvokeActionMethodWithFilters方法返回ActionExecutedContext
5、然後再執行InvokeActionResultWithFilters
6、InvokeActionResultWithFilters里在調用this.InvokeActionResultFilterRecursive
7、InvokeActionResult里最終會調用ExecuteResult