使用ASP.Net MVC 5中的Route属性设置默认控制器和操作

时间:2017-05-03 06:22:21

标签: asp.net-mvc-5 attributes asp.net-mvc-routing routeconfig

我是ASP.Net MVC的新手并且正在尝试学习ASP.Net MVC 5.我试图通过从头开始创建一个没有脚手架的示例项目来学习它。我知道可以指定默认控制器和通过调用RouteConfig.cs方法,routes.MapRoute中的默认操作。但我想知道,如果我可以设置默认控制器&使用Route属性的操作,而不使用RouteConfig.cs

修改:我发现,可以通过在RegisterRoutes的{​​{1}}方法中添加以下代码行并删除其他行来执行此操作。

RouteConfig.cs

在此之后,在我们要设置默认值的控制器操作中,只需在操作上方添加routes.MapMvcAttributeRoutes(); 属性即可。这应该做到。

但是,在表单身份验证的情况下,我们将有一个登录视图。如果我们没有传统的路由,那么重定向到Login视图将会失败,因为默认控制器(将是home)的基于属性的路由不会重定向到Login。如果我们也将[Route("~/")]属性添加到Login操作,它会抛出一个错误,说"找到了与URL匹配的多个控制器类型。如果多个控制器上的属性路由与请求的URL匹配,则会发生这种情况。"

1 个答案:

答案 0 :(得分:0)

传统的路由和属性路由可以协同工作。 只是不要删除RouteConfig.cs中的其他行并将routes.MapMvcAttributeRoutes();放在其他行的顶部,路由系统首先会尝试找到与请求的URL的属性路由匹配,如果它找不到匹配的话将寻找传统的路由系统来查找所请求的URL匹配