【问题标题】:Setting Default Controller and Action using Route attributes in ASP.Net MVC 5在 ASP.Net MVC 5 中使用 Route 属性设置默认控制器和操作
【发布时间】:2017-09-30 20:10:39
【问题描述】:

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

编辑:我发现,可以通过在RouteConfig.csRegisterRoutes 方法中添加以下代码行并删除其他行来做到这一点。

routes.MapMvcAttributeRoutes();

在此之后,在我们要设置默认值的控制器动作中,只需在动作上方添加[Route("~/")] 属性即可。应该这样做。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 2016-08-23
      • 2011-09-22
      • 2019-06-06
      • 2012-09-24
      • 1970-01-01
      • 2019-01-02
      • 2012-08-14
      相关资源
      最近更新 更多