【问题标题】:About Mvc routes关于 Mvc 路由
【发布时间】:2015-06-29 09:20:15
【问题描述】:

我只想为defaultController设置规则

 routes.MapRoute(
     name: "testDefault",
     url: "Default/{action}/{id}.html",
     defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
 );
 routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { 
          controller = "Test", 
          action = "Show", 
          id = UrlParameter.Optional 
     }
);

不过,http://10.12.2.37:120/test/show/2.html 也可以打开。这不是我想要的。有人可以帮我吗?

【问题讨论】:

  • 为什么不能直接删除默认路由映射? :)
  • 因为我希望其他控制器使用默认路由映射

标签: c# asp.net-mvc routes


【解决方案1】:

我认为您缺少约束:

routes.MapRoute(
     name: "testDefault",
     url: "Default/{action}/{id}.html",
     defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional },
     constraints: new {
          id = @"\d+"
     }
 );
 routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { 
          controller = "Test", 
          action = "Show", 
          id = UrlParameter.Optional 
     },
     constraints: new {
          id = @"\d+"
     }
);

我还建议您使用 Phil Haack 的 routedebugger 等路由测试工具。您可以使用nuget 获取它。

【讨论】:

  • 谢谢。我想我知道了
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多