我想要以下内容: 链接到{controller} / {destination}并链接到{controller} / {action},例如:航班/柏林和航班/相应搜索。
我的路线配置如下:
routes.MapRoute(
name: "LandPage",
url: "{controller}/{destination}",
defaults: new { controller = "Flights", action = "Index", destination = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果" LandPage"首先,路线将始终带有url参数的陆地页面(即 - > flight / search将转到带有参数destination = search的航班/索引),这对我不利。 如果"默认"将是第一个,我尝试导航到航班/柏林,它将尝试导航到航班控制器和行动=柏林,当然没有这样的行动......
我能想到的唯一解决方案是使用" LandPage"首先,将{destination}参数与行动名称进行比较并重定向到该行动......我不喜欢这个解决方案......任何人都可以考虑另一种解决方案吗?
谢谢!
答案 0 :(得分:1)
您可以为特定操作设置固定路线:
routes.MapRoute(
name: "Search",
url: "Flights/Search/{search}",
defaults: new { controller = "Flights", action = "Search", search = UrlParameter.Optional }
);
和
routes.MapRoute(
name: "LandPage",
url: "Flights/{destination}",
defaults: new { controller = "Flights", action = "Index", destination = UrlParameter.Optional }
);
在默认路线之前。