真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NETMVC路由(四)

ASP.NET MVC路由(四)

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的常州網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

前言

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

 

區(qū)域

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

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

ASP.NET MVC路由(四)

點擊添加后會發(fā)現(xiàn)在項目中出現(xiàn)這樣的目錄結(jié)構(gòu),如圖:

ASP.NET MVC路由(四)

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

 

1 AreaRegistration.RegisterAllAreas();

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

ASP.NET MVC路由(四)

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

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

到這里我們看一下AreaCaseAreaRegistration類型的內(nèi)部實現(xiàn):

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

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

 


分享題目:ASP.NETMVC路由(四)
URL分享:http://weahome.cn/article/ipehse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部