にせずに、私は次のルートを必要とする:ASP.NET MVCルーティング:1つのアクションにクエリ文字列を、別の
example.com/products
(例えば乗用車、トラック、バス、バイク)
コントローラ製品カテゴリページに行きます= Products
、アクション= Categories()
example.com/products?a=1&b=2
は、特定のカテゴリ内のすべての製品の指標になり(例えば、フォード、ホンダ、シボレー)
コントローラ= Products
、action = Index(string a, string b)
ルートはクエリ文字列上でのみ異なり、MVCは "?"の後には何も無視しているようです。もちろん最初のルールは1つだけです。
どのように2つを区別しますか?
編集:とは異なって言いますが、私は2つのルートが必要です。ルート内のクエリ文字列を使用することは可能ですか、それともMVCはそれを本当に無視しますか?私はカスタムバインディングとカスタム検証を行うことができるように、それをハックするか、何らかのカスタムルーティングスキームを使用する方法はありますか?
このようなURLを使用する必要はありません。aとbが設定されている場合は正しいビューを返し、そうでない場合はインデックスを返します。 URLを次のように区別しないのはなぜですか? 'example.com/products' ' example.com/products/a/b' つまり、なぜaとbをクエリパラメータにしますかURLの一部ではなく?それらをURLの一部にすると、ルーティングは簡単です。複雑なルート(最初に 'a'と' b'が必要です)とあまり複雑ではないルートを2番目に置いてください。 – Cymen
ありがとうございますが、それはリソースであるルート自体に一時的なデータをエンコードするので、私たちがやっていることではありません。これはデータを適切にフォーマットするクエリ文字列の目的です。あなたの最初の提案まで、はい、私たちはすべてのものを1つのアクションメソッドに詰め込んで、どのビューを返すかを決めることができます - しかし、私は自分のルーティングを行っていますが、それは愚かなようです。私。 – mvcstudent
これについての議論がstackoverflow上にあります。これは適切かもしれません:http://stackoverflow.com/questions/968904/asp-net-mvc-url-routing-vs-querystring – Cymen