1

ASP.net MVC 3 を使用して、e コマース アプリケーションを開発しています。

「カテゴリ」をマッピングする最良の方法を見つけるのに苦労しています

カテゴリごとにルート ページがあり、オファーや情報などが表示されます (これらは例です)。

  • /本
  • /服
  • /エレクトロニクス

現在、書籍コントローラー、スポーツコントローラー、および電子コントローラーがあり、それぞれのインデックスは適切なビューを返します...

新しいカテゴリが追加されたかのように、これは少し「ぎこちない」ように見えます。そのためのコントローラーを作成する必要があります..

製品データベースには、階層内で「フラット化」されたカテゴリがあります。したがって、コンピューティングに関する本には次のようなものがあります。

  • /本/
  • /書籍/ノンフィクション/
  • /書籍/ノンフィクション/コンピューティング

「検索」コントローラーもあります。これは製品検索を処理します (search/?q=some query) また、search/?q=*&category=/books/non-fiction/computing を実行できます。これにより、/books を持つすべての製品が表示されます。 /ノンフィクション/コンピューティングがカテゴリとしてリストされています。

だから...私がやろうとしていることは...「ルート」カテゴリをルーティングして、そのカテゴリのデフォルトビューを表示することだと思います。それ以降があればカテゴリ検索として扱うべき...

これを行う方法はありますか?

4

1 に答える 1

1

最良の解決策は、インデックス アクションがオプションのパラメーターを取る製品コントローラーを用意することだと思います。パラメータが空または null の場合は、表示する製品のデフォルト リストを返すだけです。それ以外の場合は、文字列で指定されたカテゴリに基づいて製品をフィルタリングします。

たとえば、これは次の URL になります。

/products/books 
/products/clothes 
/products/electronics
/products/whatever

または、好きなコントローラー/アクションに送信するために形成された URL が気に入らない場合は、各カテゴリのルートを追加することもできます。その正直な個人的な好みとあなたが一番好きなもの.

例えば:

context.MapRoute(
          "books_route",
          "products/books/{type}",
          new { controller = "product", action = "books", type= UrlParameter.Optional }
      );

or 


   context.MapRoute(
          "books_route",
          "books/{type}",
          new { controller = "product", action = "books", type= UrlParameter.Optional }
      );
于 2011-10-04T16:19:54.390 に答える