0

次の 2 つの定義済みルートがあるとします。

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

2 番目のルートを削除すると、ホームページに結果が表示されるという期待どおりのアクションが得られます。ただし、2 番目のルートが存在するため、常に結果ページに転送されます。

なぜこれが起こっているのかについての考えがあります.「_ c」は、2番目のルートのオプションの条件に一致するオプションのパラメーターとして引き続き表示されますが、これを機能させる方法がわかりません. 「_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 に答える