ASP.NET MVC 中的自定义路由
Custom routing in ASP.NET MVC
我在 routeconfig.cs.
中创建了两种不同的地图路线案例
// case 1
routes.MapRoute("Default2","{x}", new {controller = "Home", action = "Index"});
// case 2
routes.MapRoute("Default3","{controller}", new {controller = "Home", action = "Index"});
问题是如果我使用案例 1 并且输入是 example.com
那么 url 模式不匹配,即使提供了默认控制器和操作
对于案例 2,输入是 example.com
,它会触发默认控制器和操作。为什么会这样?
我相信情况 1 也一定会发生,但可能是什么原因?非常感谢任何帮助。
在这种情况下:
// case 1
routes.MapRoute("Default2","{x}", new {controller = "Home", action = "Index"});
您没有为占位符 {x}
定义默认值,因此这条路线 需要 恰好 1 个段(可以包含 任何值) 以匹配 URL。所以它将匹配 /foo
或 /bar
,但不会匹配 /
或 /foo/bar
.
在这种情况下:
// case 2
routes.MapRoute("Default3","{controller}", new {controller = "Home", action = "Index"});
您 是 为 {controller}
提供默认值,当 URL 中未提供时该默认值生效。因此,它将匹配 URL /
并在这种情况下路由到 HomeController.Index
方法。
我在 routeconfig.cs.
中创建了两种不同的地图路线案例// case 1
routes.MapRoute("Default2","{x}", new {controller = "Home", action = "Index"});
// case 2
routes.MapRoute("Default3","{controller}", new {controller = "Home", action = "Index"});
问题是如果我使用案例 1 并且输入是 example.com
那么 url 模式不匹配,即使提供了默认控制器和操作
对于案例 2,输入是 example.com
,它会触发默认控制器和操作。为什么会这样?
我相信情况 1 也一定会发生,但可能是什么原因?非常感谢任何帮助。
在这种情况下:
// case 1
routes.MapRoute("Default2","{x}", new {controller = "Home", action = "Index"});
您没有为占位符 {x}
定义默认值,因此这条路线 需要 恰好 1 个段(可以包含 任何值) 以匹配 URL。所以它将匹配 /foo
或 /bar
,但不会匹配 /
或 /foo/bar
.
在这种情况下:
// case 2
routes.MapRoute("Default3","{controller}", new {controller = "Home", action = "Index"});
您 是 为 {controller}
提供默认值,当 URL 中未提供时该默认值生效。因此,它将匹配 URL /
并在这种情况下路由到 HomeController.Index
方法。