2012-05-01 82 views
0

ページング名を取得するためにルーティングを使用しているCMSシステムがあります。私は最初の項目と最後の項目(ページ名)の間に無制限の値(サブディレクトリ、製品名、異なるローカリゼーション)を持つ必要があります。例えばワイルドカードを使用したASP.NET URLルーティング

/製品/コンピュータ/ ComputerType1/

そして

ComputerType1は、ページ名です

/PRODUCTOS/Ordenadores/ComputerType1/

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

私はサブディレクトリの数に制限はページ名の前に置くことができるように、ワイルドカードであることを、経路の中間部分({*ルートを})を作成する方法を見つけることができません。現在のところ、次のようなデフォルトのワイルドカードルートを使用してこれを回避することができました。すべてをキャッチするためには、

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

などがあります。これを行うためのより良い方法はあり

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

:しかし、ワイルドカードもあなたが私のように経路コードで上記の無視として、それが指定されても、gif形式のURLを入れるているように見えますか?これはカスタムルートハンドラを介して処理する必要がありますか?

答えて

0

これら
簡単なようなケースがclassを作成し、RouteBase
オーバーライドからあなたが現在httpcontextにアクセスすることができますので、あなたが要求にアクセスすることができ、この方法ではGetRouteData方法
それを引き出すためにはいあなたはルートハンドラを作成する必要がありますURL
それに応じてルーティングできます。
カスタムルートの詳細については、
http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application

+0

カスタムルートが動作しています。しかし、私はまだ、 "App_Themes/directoryname/images/image1.gif"にあるgifファイルをキャッチしているワイルドカードルートに問題があります。ルートはignore( "{resource} .gif/{* pathInfo}");イメージがルートディレクトリにある場合にのみ動作します。私が気づいたことの1つは、イメージファイルがテーマで参照されていますが、ファイルが存在しないことです。テーマ内の他のイメージファイルは存在し、ルーティングしようとしていません。私は "/ App_Themes/{folder} ....."に基づいて経路を追加することを考えています。その他の提案はありますか? – econner

+0

これは、問題はgifイメージがテーマで参照されているが、acutalファイルは存在しないため、IISは「ファイル」を無視できず、キャッチオールURLとしてルーティングしているようです。 – econner

関連する問題