我是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匹配,则会发生这种情况。"
答案 0 :(得分:0)
传统的路由和属性路由可以协同工作。
只是不要删除RouteConfig.cs
中的其他行并将routes.MapMvcAttributeRoutes();
放在其他行的顶部,路由系统首先会尝试找到与请求的URL的属性路由匹配,如果它找不到匹配的话将寻找传统的路由系统来查找所请求的URL匹配