簡體   English   中英

asp.net核心MVC區域路由,某些區域的routevalue參數

[英]asp.net core MVC area routing, routevalue params for some areas

我的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?}");

但不僅會以查詢字符串的形式彈出產品,而且不會為操作生成正確的網址,我認為這是路由錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM