2011-06-21 15 views
3

簡単な質問。コントローラとアクション名なしのASP .Net MVCルーティング

http://www.mywebsite.com/microsoftまたはhttp://www.mywebsite.com/apple マイクロソフトとリンゴはIDのようにする必要がありますが、私はコントローラのように使用します。デフォルト

は、これがデフォルトルート

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

あるこのHTTPのようなものを生成:/ /www.mywebsite .COM /ホーム/弊社についてまたはhttp://www.mywebsite .COM /製品/ディテール/ 10

私は別のルートを追加しました

routes.MapRoute(
      "Partner", // Route name 
      "{id}", // URL with parameters 
      new { controller = "Home", action = "Partners"}, // Parameter defaults 
      new { id = @"\d+" } 
     ); 

しかし、これには数値IDのみを許可するという制約があります。

私が望むものをどのように達成するのですか?

おかげ

答えて

4

式は、制約を変更することができる唯一の文字と数字を含めることができる場合:

routes.MapRoute(
    "Partner", // Route name 
    "{id}", // URL with parameters 
    new { controller = "Home", action = "Partners"}, // Parameter defaults 
    new { id = @"^[a-zA-Z0-9]+$" } 
); 
0

あなたは数字の制約を提供したくない場合は、ちょうど4番目のパラメータを削除し、すなわち

routes.MapRoute("Partner", "{id}", new { controller = "Home", action = "Partners"}); 

第4パラメータは、定義したルートパラメータの制約を提供する匿名オブジェクトです。匿名オブジェクトメンバの名前は、ルートパラメータ(この場合は「コントローラ」または「アクション」または「id」)に対応し、これらのメンバの値は正規表現であり、パラメータが順番にルートに合わせる"\ d +"は、id値が1つ以上の数字で構成されなければならないことを意味します(唯一)。

関連する問題