0

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

        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”仍然被视为一个可选参数,它与第二条路线的可选条件相匹配,但不知道如何让它工作。我不希望将“ _c”附加到 URL - 还想知道是否有其他方法解决这个问题?

谢谢。

4

1 回答 1

1

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

如果是这样,请先尝试将路由与可选的 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" });
于 2012-06-14T20:14:00.250 回答