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

来源:https://www.cnblogs.com/menglin2010/archive/2019/09/23/11514517.html

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

 


您的分享是我們最大的動力!

更多相關文章
  • 上一章介紹了配置的多種數據源被註冊、載入和獲取的過程,本節看一下這個過程系統是如何實現的。(ASP.NET Core 系列目錄) 一、數據源的註冊 在上一節介紹的數據源設置中,appsettings.json、命令行、環境變數三種方式是被系統自動載入的,這是因為系統在webHost.CreateDe ...
  • 通過以下思維導圖,學習委托的基本概念,後面著重講解委托的運用,希望通過最簡單的方式收穫更多的知識。 1.委托的各種寫法 1、委托 委托名=new 委托(會調用的方法名); 委托名(參數); 2、委托 委托名 =會調用的方法名; 委托名(參數); 3、匿名方法:委托 委托名=delegate(參數){ ...
  • ASP.NET有個大佬,HttpContext(在.Net Core中依然是它)Http請求的上下文,任何一個環節都是需要HttpContext的,需要的參數信息,處理的中間結果,最終的結果,都是放在HttpContext,是一個貫穿全局的對象。 所謂的六大對象,其實就是HttpContext的屬性 ...
  • public class CEBSignClient { public void StartSignClient() { } private static SignClientConfig _signClientConfig; public static SignClientConfig CebSi ...
  • 瀏覽器到網站程式 上一篇中,介紹IHttpModule的時候,自定義一個類CustomHttpModule繼承自IHttpModule,自定義一個事件,並配合配置文件,就可以執行自定義Module中的Init方法。我們在瀏覽一個View視圖,並新建一個WebForm頁面,也瀏覽一下 我們可以看出來, ...
一周排行
  • 前言 現在.net core跨平臺了,相信大部分人都把core的程式部署在了linux環境中,或者部署在了docker容器中,與之對應的,之前都是部署在windows環境中,在win中,我們可以用windbg來調試。但是在linux環境下 我們可以採用lldb(這隻是一種,還有其他方式) 環境 li ...
  • 一、WPF的Image控制項中設置ImageSource 還可以使用: 還可以使用: 二、Bitmap轉BitmapImage 先將Bitmap儲存成memorystream,然後指定給BitmapImage 三、Bitmap轉BitmapSource 四、BitmapSource轉Bitmap ...
  • 名詞: IWorkspaceFactory 工作空間工廠 ShapeFileWorksapceFactory 矢量文件工作空間工廠 IWorkspce 工作空間 IFeatrueWorkspace 要素工作空間 IFeatureClass 要素類 IFeatureLayer 要素圖層 Feature ...
  • 一、背景 最近在精讀 《CLR Via C 》和 《Effective C 》 的時候,發現的一個問題點。一般來說,我們實現 介面,是為了釋放托管資源和非托管資源。不過在 C 類型定義裡面有一個功能類似的東西,那就是 終結器 。 最開始我是學 C++ 的,之後學 C 的時候發現這玩意兒不論是寫法和作 ...
  • 1、Readonly成員 可將readonly修飾符應用於結構的任何成員,它指示該成員不會修改狀態。這比將readonly修飾符應用於struct聲明更精細。 像大多數結構一樣ToString()方法不會修改狀態。可以通過readonly修飾符添加到ToString()的聲明來對此進行指示: 上述更 ...
  • 轉發:https://www.cnblogs.com/Ninputer/archive/2008/11/22/generic_covariant.html 背景知識:協變和逆變 假設有這樣兩個類型:TSub是TParent的子類,顯然TSub型引用是可以安全轉換為TParent型引用的。如果一個泛型 ...
  • 在文檔屬性中,可以設置諸多關於文檔的信息,如創建時間、作者、單位、類別、關鍵詞、備註等摘要信息以及一些自定義的文檔屬性。下麵將通過C#程式來演示如何設置,同時對文檔內的已有信息,也可以實現讀取或刪除等操作。 示例大綱: 1. 添加文檔屬性 1.1 添加摘要信息 1.2 添加自定義文檔信息 2. 讀取 ...
  • 這篇文章粗略指引怎麼搭建.Net Core API,並使用Swagger服務。非常適合初學者,網上也有很多。 ...
  • 微軟官方概述: 在C 中,協變和逆變能夠實現數組類型、委托類型和泛型類型參數的隱式引用轉換。協變保留分配相容性,逆變則與之相反。 協變:能夠使用與原始指定的派生類型相比,派生程度更大的類型。 逆變:能夠使用派生程度更小的類型。 官方示例: 上面示例中,從 string object 的隱式轉換這是協 ...
  • 前端 後端 技術要點: 1.上傳附件<input type="file" name="goodsfile" id="goodsfile" class="layui-input" accept="application/vnd.openxmlformats-officedocument.spreads ...
x