ASP.NET
MVC應用的請求都是針對某個Controller的某個Action方法,是以對請求的處理最終展現在對目标Action方法的執行。而Action方法具有相應的參數,是以在方法執行之前必須根據相應的規則從請求中提取相應的資料并将其轉換為Action方法參數清單,我們将這個過程稱為Model綁定。在ASP.NET
ControllerDescriptor包含了用于描述某個Controller的中繼資料資訊。如下面的代碼片斷所示,ControllerDescriptor具有三個屬性,其中ControllerName和ControllerType分别表示Controller的名稱和類型,前者來源于路由資訊;字元串類型的UniqueId表示ControllerDescriptor的唯一辨別,該辨別由自身的類型、Controller的類型以及Controller的名稱三者派生。
ControllerDescriptor的FindAction方法根據指定的Controller上下文和名稱得到相應的Action方法,傳回的是用于描述Action方法的ActionDescriptor對象。而GetCanonicalActions得到目前Controller的所有Action方法,傳回類型為ActionDescriptor數組。
的Action選擇規則,我們也可以通過自定義ActionNameSelectorAttribute特性的方式來實作。
ReflectedAsyncControllerDescriptor的GetCanonicalActions總是傳回一個空的ActionDescriptor數組。對于繼承自AsyncController的Controller類型,一個異步Action方法由兩個比對的方法({ActionName}Async和{ActionName}Completed)構成,ReflectedAsyncControllerDescriptor在根據指定的Action名稱對方法成員進行比對的時候會自動忽略掉方法名稱的“Async”和“Completed”字尾。
<a href="http://www.cnblogs.com/artech/archive/2012/05/10/controller-descriptor.html">ASP.NET MVC三個重要的描述對象:ControllerDescriptor</a>
<a href="http://www.cnblogs.com/artech/archive/2012/05/10/action-descriptor.html">ASP.NET MVC三個重要的描述對象:ActionDescriptor</a>
<a href="http://www.cnblogs.com/artech/archive/2012/05/11/controller-descriptor-and-action-descriptor-creation.html">ASP.NET MVC三個重要的描述對象:ControllerDescriptor與ActionDescriptor的建立機制</a>
<a href="http://www.cnblogs.com/artech/archive/2012/05/13/parameter-descriptor.html">ASP.NET MVC三個重要的描述對象:ParameterDescriptor</a>
作者:蔣金楠
微信公衆賬号:大内老A
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識别二維碼)關注個人公衆号(原來公衆帳号蔣金楠的自媒體将會停用)。
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
<a href="http://www.cnblogs.com/artech/archive/2012/05/10/controller-descriptor.html" target="_blank">原文連結</a>