2010-04-18 64 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