【问题标题】:asp.net core MVC area routing, routevalue params for some areasasp.net core MVC区域路由,部分区域的routevalue参数
【发布时间】:2017-12-30 00:14:06
【问题描述】:

我的 mvc 应用程序中有许多区域,其中一些需要一个路由值,作为整个路由的前缀。像这样……

mydomain.com/{routevalue}/{area}/{controller}/{action}/{id?}

但是,有几个区域不使用此路由值,因此我希望他们回应 mydomain.com/{area}/{controller}/{action}/{id?}

我正在尝试构建一些满足此要求的路线模板,但运气不佳。 我最初为每个区域添加了一条新路线,这样不需要路线值的路线就不会在模板中出现。 这在本地运行是 IIS express 时工作正常,但是一旦我部署到服务器上的 IIS,这些区域路由都没有响应,而是得到了 404 ..

这是我当前的配置

routes.MapAreaRoute("YourAccountArea", "YourAccount", "YourAccount/{controller}/{action}/{id?}",
    defaults: new { area = "YourAccount", controller = "YourAccount", action = "Index" }); //<-- no product param on this area route

routes.MapAreaRoute("AboutYouArea", "AboutYou", "{product}/AboutYou/{controller}/{action}/{id?}",
    defaults: new { area = "AboutYou", product = "defaultproduct", controller = "AboutYou", action = "Index" });//<--this area does have the product prefix

routes.MapAreaRoute("SelectionArea", "Selection", "{product}/Selection/{controller}/{action}/{id?}",
    defaults: new { area = "Selection", controller = "SelectProduct", action = "Index" });//<--as does this

routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");//<--standard route

我想知道我是否可以完全缩小它,并让它在服务器上响应?我目前在控制器或操作上没有任何 AreaRoute 属性(因为我以前不需要它们)

编辑: 然后我尝试了这个:

routes.MapRoute("areaNoProduct", "{area:exists}/{controller}/{action}/{id?}",
defaults: new { area = "YourAccount", controller = "YourAccount", action = "Index" });

routes.MapRoute(
   name: "areaRoute",
   template: "{product}/{area:exists}/{controller}/{action=index}/{id?}");

routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");

但这不仅将产品作为查询字符串弹出,而且不会为操作生成正确的 url,我认为这是路由不正确

【问题讨论】:

    标签: c# asp.net-core-mvc asp.net-mvc-routing


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2010-12-09
      • 2018-05-31
      • 1970-01-01
      • 2021-02-13
      • 2014-11-15
      相关资源
      最近更新 更多