我对 ASP.Net MVC 非常陌生,并正在尝试学习 ASP.Net MVC 5。我正在尝试通过从头开始创建示例项目而不使用脚手架来学习它。我知道可以在其中指定默认控制器和默认操作,RouteConfig.cs
通过调用routes.MapRoute
方法。但我想知道,如果我可以使用 Route 属性设置默认控制器和操作而不使用RouteConfig.cs
.
编辑:我发现,可以通过在RegisterRoutes
方法中添加以下代码行RouteConfig.cs
并删除其他行来做到这一点。
routes.MapMvcAttributeRoutes();
在此之后,在我们要设置默认值的控制器动作中,只需[Route("~/")]
在动作上方添加属性即可。这应该这样做。
但是,在表单身份验证的情况下,我们将有一个登录视图。如果我们没有传统的路由,那么重定向到 Login 视图将失败,因为默认控制器的基于属性的路由(将是 home)没有重定向到 Login。如果我们也将[Route("~/")]
属性添加到 Login 操作,它会抛出一个错误,提示“找到与 URL 匹配的多个控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况。”