亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC路由(二)

發布時間:2020-07-18 18:20:26 來源:網絡 閱讀:867 作者:jinyuan0829 欄目:編程語言

 ASP.NET MVC路由(二)

 

前言

在上一篇中,提及了Route、RouteCollection對象的一些信息,以及它們的結構所對應的關系。按照處理流程走下來還有遺留的疑問沒有解決這個篇幅就來講解一下。

URL規則的生成

Url規則看名字挺嚇唬人的,其實就是根據我們自定義的Url來解析出一個模式,然后等待請求的Url來的時候,跟我們定義的模式進行匹配(如下圖)。這是后續的內容。

ASP.NET MVC路由(二)

在上篇中說到URL規則的定義是在Route對象中的,下面來講解在Route對象***趺錘縈沒ё⒉岬腢RL轉變成URL規則。

還是用前面的示例來演示,在前篇中說道,在MapRoute方法中的”{control}/{action}/{id}”參數部分代表著要賦值到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類型負責把接收到的Url值轉換成ParsedRoute類型的對象。

這個ParsedRoute類型的對象是Route類型的內部私有類型,而轉換而成的Url模式信息就存放在這個類型的對象實例中。請看圖1:

圖1

ASP.NET MVC路由(二)

圖1所示,當一個Url值為”{controller}/{action}”賦值到Route對象的Url屬***時,會由RouteParser內部類型的Parse()靜態方法來執行Url解析并且轉換成ParsedRoute內部類型,而ParsedRoute類型的構造函數是由PathSegment類型的集合構成。而在MVC框架中并不是使用PathSegment類型的,而是使用PathSegment類型的的派生類(如圖2),并且這些派生類分別對應著不同的Url片段,就好比示例的”{controller}/{action}”就會分別的表示為兩種類型(下面會講到)。

圖2

ASP.NET MVC路由(二)

正如圖2所示的對象模型,按照圖2的模型結構。這個時候ParsedRoute內部所存的Url模式值為圖3所示,

圖3

ASP.NET MVC路由(二)

如圖3所示上述示例中的“controller”生成為ContentPathSegment類型,而“/”則被生成為SeparatorPathSegment類型。對于這些類型的具體細節這里就不做詳細的介紹了。目的在于只是把內部的實現粗略的把對象模型說明一下,目的就是讓大家知道有這么一個過程來生成URL規則,并且是什么樣的一個實現的方式,讓大家知道Route對象的本身就是帶有URL規則的,在服務器請求到來的時候是眾多Route對象根據自身攜帶的URL規則來進行匹配,這部分內容后續說到。

如果感興趣想清晰的知道內部實現的具體,可以自己用反編譯工具來看里面的源代碼,這部分的Url規則的生成過程就講到這里。

希望看完后大家能夠記住大概的流程和這些對象在系統中的位置。會在下一篇幅講解RouteData的是怎么根據請求的Url來匹配生成的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽阳市| 扬中市| 酉阳| 台安县| 富裕县| 长乐市| 溧阳市| 泰兴市| 彭水| 黄大仙区| 庆阳市| 玉林市| 青浦区| 温宿县| 台前县| 三原县| 辉南县| 若尔盖县| 扎兰屯市| 鄄城县| 中西区| 株洲县| 丹巴县| 镇安县| 赤城县| 塘沽区| 桦南县| 磐石市| 嘉善县| 汪清县| 新建县| 康平县| 屏东县| 凤庆县| 兴山县| 上栗县| 曲沃县| 合作市| 平阳县| 顺平县| 大新县|