Asp.net mvc 3 MVC3路由-如何确保具有特定值的路由优先?

Asp.net mvc 3 MVC3路由-如何确保具有特定值的路由优先?,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,给定以下两条定义的路线: routes.MapRoute(name: "CityCategoryPage", url: "{city}-{state}/{categoryName}/__c/", defaults: new { controller = "Home", action = "GeoSubCategories" }); routes.MapRoute(name: "CityStateCategoryResults", url: "{city}-{sta

给定以下两条定义的路线:

        routes.MapRoute(name: "CityCategoryPage", url: "{city}-{state}/{categoryName}/__c/", defaults: new { controller = "Home", action = "GeoSubCategories" });
        routes.MapRoute(name: "CityStateCategoryResults", url: "{city}-{state}/{categoryName}/{searchTerm}/{pageNumber}/{pageSize}", defaults: new { controller = "Results", action = "SearchCityStateCategory", pageNumber = UrlParameter.Optional, pageSize = UrlParameter.Optional });
如果我删除了第二条路径,我将获得在主页上看到结果的预期操作。然而,有了第二条路线,我总是被转发到结果页面

我知道为什么会发生这种情况:“_c”仍然被视为与第二条路线的可选条件相匹配的可选参数,但不确定如何使其工作。我不想在URL后面加上“_c”-还想知道是否有其他方法可以解决这个问题


谢谢。

如果我理解正确,您希望在没有提供搜索词的情况下显示frontpage吗

如果是这样,请首先尝试将路由与可选的searchTerm匹配,如果不存在searchTerm,则默认为主页路由,如下所示:

routes.MapRoute(name: "CityStateCategoryResults", url: "{city}-{state}/{categoryName}/{searchTerm}/{pageNumber}/{pageSize}", defaults: new { controller = "Results", action = "SearchCityStateCategory", pageNumber = UrlParameter.Optional, pageSize = UrlParameter.Optional });
routes.MapRoute(name: "CityCategoryPage", url: "{city}-{state}/{categoryName}/", defaults: new { controller = "Home", action = "GeoSubCategories" });