次のようなシナリオのルーティングの例またはサンプルを探しています。
処理の一般的な例: {controller}/{action}/{id}
したがって、ストアの製品検索を行うシナリオでは、次のようになります。
public class ProductsController: Controller
{
public ActionResult Search(string id) // id being the search string
{ ... }
}
これを行ういくつかの店舗があり、一貫してそれを望んでいたとします。その場合、{category}/{controller}/{action}/{id} を持つ方法はありますか?
特定の店舗に対して特定の検索を行い、別の店舗に対して別の検索方法を使用できるようにするには?
(URL 内の関数自体よりもストア名を優先する必要がある場合)
または、次のようになります。
public class ProductsController: Controller
{
public ActionResult Search(int category, string id) // id being the search string
{
if(category == 1) return Category1Search();
if(category == 2) return Category2Search();
...
}
}
良い例ではないかもしれませんが、基本的には、同じコントローラー名を使用して、いくつかの異なるシナリオで単純な URL を使用するという考えです。または、一意のコントローラー名が必要であり、それらを配置する方法がありません。わずかに異なる名前空間/ディレクトリ?
編集して追加:
これが必要なもう 1 つの理由は、カテゴリを含む URL が必要な場合があり、特定のコントローラが特定のカテゴリでのみ機能するためです。
いいえ:
/this/search/items/search+term <-- 動作
/that/search/items/search+term <-- 検索コントローラーが許可されていないため、機能しません。