[英]Different route configurations going to the same action method
我想顯示每個省或每個地區的山地自行車道的列表。 一個省包括許多地區。
我正在嘗試顯示以下2個URL:
www.mywebsite.com/paarl-trails (area trails)
www.mywebsite.com/western-cape-trails (province trails)
我具有以下路由配置(按此順序):
routes.MapRoute(
name: "ProvinceDefault",
url: "{seoProvinceName}-trails",
defaults: new { controller = "Province", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
routes.MapRoute(
name: "AreaDefault",
url: "{seoAreaName}-trails",
defaults: new { controller = "Area", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
這是我在視圖中創建鏈接的方式:
<a href="@Url.RouteUrl("AreaDefault", new { seoAreaName = trail.Area.SeoName })">@trail.Area.Name</a>,
<a href="@Url.RouteUrl("ProvinceDefault", new { seoProvinceName = trail.Area.Province.SeoName })">@trail.Area.Province.Name</a>
鏈接正確顯示,但是兩個都被重定向到省控制員的“索引”方法。 我更改了2條路由配置,但是它們都轉到了區域控制器的Index方法。
我希望www.mywebsite.com/paarl-trails
轉到區域控制器的索引方法,並且我希望www.mywebsite.com/western-cape-trails
轉到省控制器的Index方法。
我該如何正確處理?
我同意前面的答案,因為ASP.NET MVC路由引擎無法區分這兩種路由。 您可以做的是在SEOProvinceName之前添加區域名稱。 這樣,路線將如下所示:
為了使此工作正常,路由應如下所示:
routes.MapRoute(
name: "ProvinceDefault",
url: "{seoAreaName}/{seoProvinceName}-province-trails",
defaults: new { controller = "Province", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
routes.MapRoute(
name: "AreaDefault",
url: "{seoAreaName}-area-trails",
defaults: new { controller = "Area", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
希望對您有所幫助。
MVC路由無法正常工作。 當從服務器請求URL時,路由引擎將按照您定義它們的順序選擇與URL匹配的第一條路由。 路由系統無法區分您所定義的兩條路由,因為它們看起來相同:后面跟-trails
。
您必須更改URL及其路由,以使路由引擎正確處理它們,如下所示:
網址:
路線:
routes.MapRoute(
name: "ProvinceDefault",
url: "{seoProvinceName}-province-trails",
defaults: new { controller = "Province", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
routes.MapRoute(
name: "AreaDefault",
url: "{seoAreaName}-area-trails",
defaults: new { controller = "Area", action = "Index" },
namespaces: new[] { "MyProject.WebUI.Controllers" }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.