[英]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
我想知道我是否可以瘦下來,並使其真正在服務器上響應? 我目前在控制器或操作上沒有任何Area
或Route
屬性(因為我以前不需要它們)
編輯:我然后嘗試這樣做:
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?}");
但不僅會以查詢字符串的形式彈出產品,而且不會為操作生成正確的網址,我認為這是路由錯誤
我會和asp-tag-helpers一起去嘗試一下http://www.davepaquette.com/archive/2015/06/01/mvc-6-anchor-tag-helper.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.