ASP.NET MVC 路由(四)

來源:互聯網
上載者:User

標籤:asp.net   mvc   .net   c#   

ASP.NET MVC 路由(四)

前言

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

 

地區

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

(沒有MVC項目的建立一個)首先在MVC項目中,右鍵項目->添加->地區,然後在彈出的對話方塊中輸入地區的名稱,

點擊添加後會發現在項目中出現這樣的目錄結構,

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

 

1 AreaRegistration.RegisterAllAreas();

RegisterAllAreas()方法就是註冊所有地區的意思,過程:

在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”索引下則是次路由所在的地區,也就是地區名稱。

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

 

 

 

 

金源

出處:http://blog.csdn.net/jinyuan0829

本文著作權歸作者和CSDN共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.