MVC路由干扰问题

时间:2015-03-08 15:25:52

标签: c# model-view-controller routes

我想要以下内容: 链接到{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}参数与行动名称进行比较并重定向到该行动......我不喜欢这个解决方案......任何人都可以考虑另一种解决方案吗?

谢谢!

1 个答案:

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

在默认路线之前。