2009-03-17 12 views
1

私はこのようになりますコールがあります。Html.Routelink出力 - ASP.NET C#MVC

http://localhost:1485/Home/ShowCategory/Electronics%20&%20Photography?subcat=electronics-photo 

はなぜ:

<%= Html.RouteLink(item.displayName, "DisplayCategory", new { category = Html.Encode(item.displayName), subcat = item.searchName }) %> 

を、私はこのようになりますHTMLを取得していますURLは "/ electronics-photo"ではなく "?subcat = electronics-photo"で終わりますか?それは何らかの形で経路定義に関連していますか?

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "" } 
    ); 

すべての手がかりをいただければ幸いです!

答えて

0

私はただスタブを取っているだけですが、MVCフレームワークを使用しているようです。

すべてのコントローラにアクションがあります(この場合はShowCategory)。デフォルトでは、クエリ文字列(この場合はカテゴリ)が使用されます。 MVCは意図的にフォルダ構造を抽象化します。私は、MVCアプリケーションは常にこのタイプのURLと深さdomain.ext /コントローラ/アクション?queryStringを持っていると信じています。

サブキャットが適切に設定されているかどうかは疑問だと思います。もう少し情報やコードが有望かもしれません。

ご質問のルーティング部分にはお答えできません。

+0

お返事ありがとうございます。はい、私はMVCを使用しています...なぜ私は混乱しているのですか?単にqueryStringを作成するのではなく、別の '/'を追加して/ queryStringを作成するのです。 –

+0

MVCはクエリ文字列を使用してアクションにパラメータを渡します。 '/'は、コントローラとアクションフォルダのみを持つMVC以外のサブフォルダにアクセスするためにのみ使用されます。 – user58044

2

MVCルーティングは、ルート定義内のパラメータの1つに一致しない場合、クエリ文字列でタックします。あなたのルートにsubcatを追加してみてください:

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}/{subcat}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "", subcat = "" } 
    ); 
関連する問題