首頁  >  文章  >  後端開發  >  MyMVC框查找Action的流程詳解

MyMVC框查找Action的流程詳解

Y2J
Y2J原創
2017-05-17 11:30:311877瀏覽

首先,我們要先在web.config中註冊MyMVC的HttpHandlerFactory,它是整個框架的入口。
在ASP.NET的管線過程中,會呼叫GetHandler()方法,終於我的程式碼有機會運作了!
框架執行的第一行程式碼是:

// 根据请求路径,定位到要执行的ActionControllerActionPair pair = UrlParser.ParseAjaxUrl(virtualPath);
public sealed class ControllerActionPair{    public string Controller;    public string Action;}
静态方法UrlParser.ParseAjaxUrl()就是专门用来解析URL并返回ControllerActionPair的:

程式碼很簡單,核心其實就是那個正規表示式,從URL中擷取Controller,Action的名字全靠它。
至於正規表示式的使用,我想這是個基本功,這裡就略過了。

再來看AjaxHandlerFactory的第二個呼叫:

// 获取内部表示的调用信息InvokeInfo vkInfo = ReflectionHelper.GetAjaxInvokeInfo(pair);

ReflectionHelper類別是一個內部使用的工具類,專門用於反射處理,AjaxAction查找過程的相關程式碼如下(注意程式碼中的註解): 

上面就是AjaxAction找相關的4段程式碼:
1. 在ReflectionHelper的靜態建構子中,我載入了所有AjaxController。
2. GetAjaxController方法用於根據一個Controller的名字傳回Controller的類型描述。
3. GetAjaxAction方法用於根據Controller的類型以及要呼叫的Action的名字傳回Action的描述資訊。
4. GetAjaxInvokeInfo方法用於根據從AjaxHandlerFactory得到的ControllerActionPair描述轉成更具體的描述資訊。

程式碼中,Action的尋找過程採用了延遲的載入模式,保存Action描述資訊的集合我採用了執行緒安全的Hashtable

##【相關推薦】

1.

特別推薦「php程式設計師工具箱」V0.1版本下載

2.

ASP免費影片教學

3. 

#入門級的.NET MVC 實例

4. 

. NET MyMVC架構執行Action的過程詳解

#5. 

.NET MyMVC架構如何為方法賦值的教學

6. 

.NET MyMVC框架處理傳回值的教學#

以上是MyMVC框查找Action的流程詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn