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

溫馨提示×

溫馨提示×

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

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

ASP.NET MVC路由(四)

發布時間:2020-08-10 05:44:48 來源:網絡 閱讀:808 作者:jinyuan0829 欄目:編程語言

ASP.NET MVC路由(四)

前言

在前面的篇幅中我們講解路由系統在MVC中的運行過程以及粗略的原理,想必看過前面篇幅的朋友應該對路由有個概念***的了解了,本篇來講解區域,在讀完本篇后不會肯定的讓你對區域有徹底的了解,但是會讓你在以后對這部分知識掌握的路上夯上厚實的基礎。

 

區域

在路由的起初在按照VS環境新建的MVC項目來講的,今天區域也是按照這樣的套路來講。MSDN上說,在大型項目使用中被MVC劃分為較小單元也就是區域,我沒有使用過區域的經驗,所以這篇只能講解它的對象模型以及粗略的原理。

(沒有MVC項目的新建一個)首先在MVC項目中,右鍵項目->添加->區域,然后在彈出的對話框中輸入區域的名稱,如圖

ASP.NET MVC路由(四)

點擊添加后會發現在項目中出現這樣的目錄結構,如圖:

ASP.NET MVC路由(四)

暫時先不管這些目錄結構的意思,先來看一下前面篇幅中說到的Global.asax文件中的MvcApplication類的Application_Start()方法中注冊區域的代碼:

 

1 AreaRegistration.RegisterAllAreas();

RegisterAllAreas()方法就是注冊所有區域的意思,如圖所示過程:

ASP.NET MVC路由(四)

在RegisterAllAreas()方法執行的時候內部會根據MVC-AreaRegistrationTypeCache.xml區域緩存文件來讀取所緩存的所有區域類型(全部是實現AreaRegistration),如果緩存文件中為空,則會遍歷當前系統所依賴的所有程序集搜尋AreaRegistration類型且寫入到緩存文件。

并且返回一個類型集合,此時的類型集合中都是實現了AreaRegistration類型的實現類,在遍歷每一個類型的時候都會引用傳遞的把當前系統的路由表RouteTable.Routes傳遞到新建對象AreaRegistrationContext(參數上下文對象)中,隨后再調用基類AreaRegistration的抽象方法RegisterArea(),當然了這是框架中才這么實現的,而在實際情況中此處的基類AreaRegistration已經是上述示例中的AreaCaseAreaRegistration類型了。

到這里我們看一下AreaCaseAreaRegistration類型的內部實現:

 1     public class AreaCaseAreaRegistration : AreaRegistration
 2     {
 3         public override string AreaName
 4         {
 5             get
 6             {
 7                 return "AreaCase";
 8             }
 9         }
10 
11         public override void RegisterArea(AreaRegistrationContext context)
12         {
13             context.MapRoute(
14                 "AreaCase_default",
15                 "AreaCase/{controller}/{action}/{id}",
16                 new { action = "Index", id = UrlParameter.Optional }
17             );
18         }
19     }

這里要說的是在RegisterArea()方法中的AreaRegistrationContext類型中的MapRoute()方法并不是RouteCollectionExtensions擴展類型中的方法,而是在此外面又包裝了一層,此處的MapRoute()方法注冊的路由對象中DataTokens屬***值” area”索引下則是次路由所在的區域,也就是區域名稱。

這個時候可以通過調試發現,區域中的路由也和程序中定義的路由一起被注冊到了路由表中,說明區域也就是路由定義在物理文件上的劃分,當然還有其它大的作用,本人暫時沒有領悟到,有感了會第一時間和大家分享。

 

向AI問一下細節

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

AI

九台市| 常德市| 大邑县| 呼玛县| 虹口区| 长顺县| 治县。| 赞皇县| 钟山县| 姜堰市| 司法| 资溪县| 琼结县| 西平县| 尼勒克县| 清新县| 临城县| 镇江市| 漳州市| 陆川县| 昌邑市| 武定县| 丰顺县| 许昌市| 项城市| 陈巴尔虎旗| 满城县| 拜泉县| 武川县| 阳山县| 中阳县| 兴文县| 南宫市| 普宁市| 康保县| 丹江口市| 库尔勒市| 年辖:市辖区| 莱阳市| 丰原市| 阜宁县|