ASP.NET MVC路由(二)
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有貴州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。在上一篇中,提及了Route、RouteCollection對象的一些信息,以及它們的結(jié)構(gòu)所對應(yīng)的關(guān)系。按照處理流程走下來還有遺留的疑問沒有解決這個篇幅就來講解一下。
Url規(guī)則看名字挺嚇唬人的,其實(shí)就是根據(jù)我們自定義的Url來解析出一個模式,然后等待請求的Url來的時候,跟我們定義的模式進(jìn)行匹配(如下圖)。這是后續(xù)的內(nèi)容。
在上篇中說到URL規(guī)則的定義是在Route對象中的,下面來講解在Route對象***趺錘縈沒ё⒉岬腢RL轉(zhuǎn)變成URL規(guī)則。
還是用前面的示例來演示,在前篇中說道,在MapRoute方法中的”{control}/{action}/{id}”參數(shù)部分代表著要賦值到Route對象的Url屬***,也說過在賦值Route對象的Url屬***時Set訪問器還會做一些其它的操作。例如代碼1-1:
代碼1-1
1 public class Route 2 { 3 private string _url; 4 private ParsedRoute _parsedRoute; 5 public string Url 6 { 7 get { return _url; } 8 set 9 { 10 _url = value; 11 //解析Value值 12 this._parsedRoute = RouteParser.Parse(value); 13 } 14 } 15 …… 16 }
這里只是顯示了Route對象的一部分用于演示,在代碼1-1中,可以看出RouteParser類型負(fù)責(zé)把接收到的Url值轉(zhuǎn)換成ParsedRoute類型的對象。
這個ParsedRoute類型的對象是Route類型的內(nèi)部私有類型,而轉(zhuǎn)換而成的Url模式信息就存放在這個類型的對象實(shí)例中。請看圖1:
圖1
圖1所示,當(dāng)一個Url值為”{controller}/{action}”賦值到Route對象的Url屬***時,會由RouteParser內(nèi)部類型的Parse()靜態(tài)方法來執(zhí)行Url解析并且轉(zhuǎn)換成ParsedRoute內(nèi)部類型,而ParsedRoute類型的構(gòu)造函數(shù)是由PathSegment類型的集合構(gòu)成。而在MVC框架中并不是使用PathSegment類型的,而是使用PathSegment類型的的派生類(如圖2),并且這些派生類分別對應(yīng)著不同的Url片段,就好比示例的”{controller}/{action}”就會分別的表示為兩種類型(下面會講到)。
圖2
正如圖2所示的對象模型,按照圖2的模型結(jié)構(gòu)。這個時候ParsedRoute內(nèi)部所存的Url模式值為圖3所示,
圖3
如圖3所示上述示例中的“controller”生成為ContentPathSegment類型,而“/”則被生成為SeparatorPathSegment類型。對于這些類型的具體細(xì)節(jié)這里就不做詳細(xì)的介紹了。目的在于只是把內(nèi)部的實(shí)現(xiàn)粗略的把對象模型說明一下,目的就是讓大家知道有這么一個過程來生成URL規(guī)則,并且是什么樣的一個實(shí)現(xiàn)的方式,讓大家知道Route對象的本身就是帶有URL規(guī)則的,在服務(wù)器請求到來的時候是眾多Route對象根據(jù)自身攜帶的URL規(guī)則來進(jìn)行匹配,這部分內(nèi)容后續(xù)說到。
如果感興趣想清晰的知道內(nèi)部實(shí)現(xiàn)的具體,可以自己用反編譯工具來看里面的源代碼,這部分的Url規(guī)則的生成過程就講到這里。
希望看完后大家能夠記住大概的流程和這些對象在系統(tǒng)中的位置。會在下一篇幅講解RouteData的是怎么根據(jù)請求的Url來匹配生成的。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。