0

我对 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 匹配,就会发生这种情况。”

4

1 回答 1

0

传统路由和属性路由可以一起工作。只是不要删除其他行RouteConfig.cs并将其放在routes.MapMvcAttributeRoutes();其他行之上,路由系统首先会尝试为请求的 URL 找到与 Attribute Routes 的匹配项,如果找不到匹配项,那么将寻找传统路由系统来查找匹配项对于请求的 URL

于 2017-05-03T23:36:45.673 回答