2012-09-06 140 views
2

如果您的解決方案中有區域,使用MVC3/4,它將嘗試並解析區域和根級別控制器的順序是什麼?MVC區域路由解析

例如:

是否首先嚐試按字母順序排列的根級別路線,然後在區域級別路線?

還是先按照字母順序檢查區域層次路線,然後檢查根層次?

謝謝

回答

1

MVC解析器區域特定的路由第一次,然後根級別的路由。這是因爲在默認情況下,你必須在Global.asax中下面的代碼:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); //1. registers areas 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); //2. only after that register root routes 
    } 

我還沒有嘗試過,但如果你想改變這種行爲,您可以嘗試在你的項目交換這些代碼行。

+1

那麼區域註冊的順序呢? – shenku

+1

我剛剛審查過了區域註冊代碼,沒有找到任何代碼是特定於訂單的。在這篇文章中,還提到了http://www.philliphaydon.com/2011/07/mvc-areas-routes-order-of-routes-matter/:「花了我幾個小時才弄清楚這一點,MVC不能保證訂單其中區域已註冊。「您可以谷歌解決方案如何按特定順序(我已經看到它)註冊區域,但通常區域應該是非常獨立的,所以你不應該照顧他們的順序。這就是他們創建的原因。 –

+0

他們解決的順序肯定會影響嗎?這就是爲什麼你做更具體的路線到最不具體的路線,對吧? (在這種情況下,我關心他們解決的訂單) – shenku