2009-07-22 21 views
6

ASP.NET MVCでは、URLの一部のデータ型に基づいて、使用するコントローラを決定するルートを定義できますか?ASP.NET MVC URLルート

はmydomain/123

routes.MapRoute("Integer", "{myInteger}", new { controller = "Integer", action = "ProcessInteger", myInteger = "" }); 

routes.MapRoute("String", "{myString}", new { controller = "String", action = "ProcessString", myString = "" }); 

は基本的に、私は次のURLを彼らは部品の数が同じにもかかわらず、異なるコントローラによって処理されるようにしたい。例えば

マウスドメイン/ ABC

PS上記のコードは機能しませんが、私が達成したいことを示しています。

答えて

7

はい、あなたはconstraintsを使用する場合:

ようなので:

routes.MapRoute(
       "Integers", 
       "{myInteger}", 
        new { controller = "Integer", action = "ProcessInteger"}, 
        new { myInteger = @"\d+" } 
     ); 

あなたはそれが、その後、あなたの文字列のルート(つまり@"\d+"ための制約が含まれていない)の上にそのルートを置く場合よ整数を含む任意のルートを除外し、整数を持たないものはすべて渡され、stringルートがそれを受け取ります。

本当のトリックは、ルートがRegular Expressionsに基づいて通過するものをフィルタリングすることができるということです。

+0

これは、おかげで、ありがとう。 –

+0

問題ありません。私は、ASP.NET MVCルートに関する問題が*たくさんありました。本を満たすには十分です。またはいくつかのブログ記事。私は彼らを終えるチャンスを得ることができる場合。 –

関連する問題