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