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 方法。