Asp.net mvc 5 在ASP.NETMVC5中使用路由属性设置默认控制器和操作

Asp.net mvc 5 在ASP.NETMVC5中使用路由属性设置默认控制器和操作,asp.net-mvc-5,attributes,asp.net-mvc-routing,routeconfig,Asp.net Mvc 5,Attributes,Asp.net Mvc Routing,Routeconfig,我对ASP.NETMVC非常陌生,正在尝试学习ASP.NETMVC5。我试图通过从头开始创建一个没有脚手架的示例项目来学习它。我知道可以通过调用routes.MapRoute方法在RouteConfig.cs中指定默认控制器和默认操作。但是我想知道,如果我不使用RouteConfig.cs,是否可以使用Route属性设置默认控制器和操作 Edit:我发现,通过在RouteConfig.cs的registerOutes方法中添加以下代码行并删除其他行,可以做到这一点 routes.MapMvcAt

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

Edit:我发现,通过在
RouteConfig.cs
registerOutes
方法中添加以下代码行并删除其他行,可以做到这一点

routes.MapMvcAttributeRoutes();
在此之后,在要设置默认值的控制器操作中,只需在操作上方添加
[Route(“~/”)
属性。这应该可以做到


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

传统路由和属性路由可以一起工作。 只是不要删除
RouteConfig.cs
中的其他行,并放置
routes.mapmvcattributteroutes()
在其他行的顶部,路由系统首先将尝试为请求的URL查找与属性Routes匹配的项,如果找不到匹配项,则将查找传统路由系统以查找与请求的URL匹配的项