MVC 路由干扰问题



我想有以下内容:链接到 {控制器}/{目的地} 并链接到 {控制器}/{操作},例如:航班/柏林和航班/搜索。

我的路由配置如下:

    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 }
);

在默认路由之前。

最新更新