2010-04-18 65 views
1

以下是什麼問題?關於MVC路線的困惑

routes.MapRoute(
     "Default2", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = "test" } // Parameter defaults 
    ); 

    routes.MapRoute(
     "Default1", // Route name 
     "{controller}/{action}/{name}", // URL with parameters 
     new { controller = "Home", action = "Report", name = "" } // Parameter defaults 
    ); 

,當我瀏覽到/ home /索引「ID」參數以「試驗」的默認值,但是,當我瀏覽到家庭/報了名參數爲null。

總之,如果路由定義是路由表中的第一個,那麼該參數將採用其默認值。但下面的其他人沒有。

回答

0

這兩條路線{controller}/{action}/{id}{controller}/{action}/{name}是不明確的。它無法區分/home/index/id/home/report/abc,它始終是路線定義中第一條將被捕獲的路線,因爲在第二種情況下,它認爲是id = "abc"

+0

那麼我該怎麼做才能將默認值分配給參數?我應該通過將{controller}參數更改爲真正的控制器名稱來爲每個控制器創建不同的路由嗎?任何其他方式? – yang 2010-04-18 11:21:35

+0

更改{控制器}將不起作用。必須爲每個動作定義路線。 – yang 2010-04-18 11:23:23

0

使用Phil Haack路由調試器..以獲得更清晰的視圖,瞭解您的路由如何在不同的路徑上作出反應。

download