我想有以下内容:链接到 {控制器}/{目的地} 并链接到 {控制器}/{操作},例如:航班/柏林和航班/搜索。
我的路由配置如下:
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参数的土地页面(即-->航班/搜索将转到带有参数destination =搜索的航班/索引),这对我不利。如果"默认"是第一个,并且我尝试导航到航班/柏林,它将尝试导航到航班控制器并操作=柏林,当然没有这样的操作...
我能想到的唯一解决方案是首先使用"LandPage",然后将 {destination} 参数与操作名称进行比较并重定向到该操作......我不喜欢那个解决方案...任何人都可以想到另一种解决方案??
谢谢!
您可以为特定操作设置固定路由:
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 }
);
在默认路由之前。