一千萬個為什麽

搜索

關於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/index“id”時,參數采用默認值“test”,但是當我導航到home/report時,name參數為null。

簡而言之,如果路由定義是路由表中的第一個,則參數將采用其默認值。但下面的其他人沒有。

最佳答案

這兩個路徑 {controller}/{action}/{id}{controller}/{action}/{name} 是不明確的。它無法區分/home/index/id/home/report/abc ,它始終是路由定義中的第一條路由,因為在第二條路由中它認為 id =“abc”

轉載註明原文: 關於MVC路由的困惑