1

ページ名を取得するためにルーティングを使用しているCMSシステムがあります。最初のアイテムと最後のアイテム(ページ名)の間に無制限の値(サブディレクトリ、製品名、さまざまなローカリゼーション)を設定する必要があります。

例えば:

/ Products / Computers / ComputerType1 /

/ Productos / Ordenadores / ComputerType1 /

ここで、ComputerType1はページ名です。

routes.Add(new Route("{*route}/{pageName}", routeHandler));

ルートの中央部分({* route})をワイルドカードにして、ページ名の前に無制限の数のサブディレクトリを配置できるようにする方法が見つかりません。現在、これを回避するには、次のようなデフォルトのワイルドカードルートを使用する必要があります。

routes.Add(new Route("{*route}", routeHandler));

すべてをキャッチします。ただし、ワイルドカードは、ルートコードで上記の無視として指定した場合でも、gifURLを許可しているようです。

routes.Ignore("{resource}.axd/{*pathInfo}");
routes.Ignore("{resource}.asmx/{*pathInfo}");
routes.Ignore("{resource}.ashx/{*pathInfo}");
routes.Ignore("{resource}.gif/{*pathInfo}");
routes.Ignore("{resource}.png/{*pathInfo}");
routes.Ignore("{resource}.jpg/{*pathInfo}");
routes.Ignore("{resource}.ico/{*pathInfo}");
routes.Ignore("{resource}.pdf/{*pathInfo}");
routes.Ignore("{resource}.css/{*pathInfo}");
routes.Ignore("{resource}.js/{*pathInfo}");

これを行うためのより良い方法はありますか?これはカスタムルートハンドラーを介して処理する必要がありますか?

4

1 に答える 1

1


はい、これらの単純なcreate aのような場合のルートハンドラーを作成し、このメソッドのメソッドを オーバーライドしてclass派生させる必要があり ます。現在のメソッドにアクセスできるため、要求されたものにアクセスできる ため、uはそれに応じてルーティングできます。 カスタムルートの詳細については、このリンクをご覧くださいhttp://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-ApplicationRouteBase
GetRouteData
httpcontextURL


于 2012-05-01T05:35:56.120 に答える