4、看源碼MVC Controller如何調用Action

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章