2012-04-03 8 views
0

私はうまく動作するMVCアプリケーションを作成しました。今私はurlのカスタムキーを追加し、それらを解析したい、それはURLの1つのタイプのためだけに働いて、次のものではありません。Maprouteはプレフィックスで動作していませんか?

マイルートエントリは次のとおりです。

routes.MapRoute(null,"client_{client_key}", 
      new 
      { 
       controller = "templates", action = "contents_page" 
      }); 
routes.MapRoute(null,"client_{client_key}/{keyword}", 
      new 
      { 
       controller = "templates", action = "contents_pagen" 
      }); 

私のURL:

  • http://www.lmenaria.com/client_1
  • http://www.lmenaria.com/client_2

上記のURLは正常です。

  • http://www.lmenaria.com/client_1/home.html
  • http://www.lmenaria.com/client_2/home.html

URLの両タイプが動作していない、私はcontents_pagenアクションのキーワードパラメータでhome.htmlを取得しておりません。

私のアクション:

public ActionResult contents_pagen(string client_key, string keyword, FormCollection frmColl) 
{ 
} 

だから、私はそれを修正する方法を教えてください。

答えて

0

スワップあなたのルートエントリを、より具体的なルートが最初に来るように:要求パイプラインで

routes.MapRoute(null,"client_{client_key}/{keyword}", 
    new 
    { 
     controller = "templates", action = "contents_pagen" 
    }); 
routes.MapRoute(null,"client_{client_key}", 
    new 
    { 
     controller = "templates", action = "contents_page" 
    }); 

、アクションメソッドリゾルバを使用すると、client_keyルートパラメータを持っていることを見ている、そしてそれはに対してそれを一致さ最初に利用可能なルート。

キーワードparamを使用してルートを設定すると、URLにclient_keyとkeywordの両方のパラメータが含まれている場合のみ、MVCはそのルートと一致します。それ以外の場合は、client_keyパラメータのみを使用すると、最初のルートをスキップして2番目のルートと一致します。

関連する問題