【问题标题】:Confusion about MVC Routes关于 MVC 路由的困惑
【发布时间】:2010-04-18 11:15:59
【问题描述】:

下面的问题是什么?

    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 参数为空。

简而言之,如果路由定义是路由表中的第一个,则该参数采用其默认值。但下面的其他人没有。

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

    {controller}/{action}/{id}{controller}/{action}/{name} 这两条路线是模棱两可的。它无法区分/home/index/id/home/report/abc,它总是会被捕获的路由定义中的第一个路由,因为在第二种情况下它认为id = "abc"

    【讨论】:

    • 那么我应该怎么做才能给参数分配默认值呢?我应该通过将 {controller} 参数更改为真实控制器名称来为每个控制器创建不同的路由吗?还有什么办法吗?
    • 更改 {controller} 不起作用。必须为每个操作定义一个路由。
    【解决方案2】:

    使用 Phil Haack Routes 调试器.. 更清楚地了解您的路线在不同路径上的反应。

    download

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 2019-05-17
      • 2020-03-06
      • 2016-03-16
      • 2013-07-27
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多