1

表示したい注文のリストがあるとします。すべての注文、特定の州からのすべての注文、および特定のカテゴリからのすべての注文を表示する機能をユーザーに提供したいと思います。これらはそれぞれ、日付範囲でフィルタリングできます。

ルーティングについて心配することなく、クエリ文字列にそれぞれを追加するだけかもしれません。

/orders?State=TX&Category=Books&DateRange=Yesterday

私はこの作業を簡単に行うことができましたが、これが正しいMVCのやり方であるとは「感じ」ません。

次のようなルートを作成できます。

/orders/              
/orders/state/{state}
/orders/category/{category}
/orders/state/{state}/category/{category}/
/orders/state/{state}/category/{category}/Date/{date-range}

しかし、私はまだそこにないそれらのフィルターのそれぞれをサポートしたいと思います。これを処理するためのより良い方法はありますか、それとも私は全体を考えすぎていますか?

URLのみのパスを使用する場合、必要なすべての組み合わせ(状態、カテゴリなし、日付、状態、カテゴリなし、日付なし、状態なし、カテゴリ)に対してこれらのルートを繰り返すだけで、これらのルートを作成する方法が明確ではありません。 、日付など)

4

2 に答える 2

1

クエリパラメータのバージョンはMVCには問題ないと思います。おそらくあなたを混乱させるのは、ユーザーに特定の注文のページを提供したいときは、ページにを入れるということですorder_id。つまり、従来のWebサイトでは、そのURLを作成するだけです。

/order.html?order_id=1234

(または何でも)、使用したいMVCで

/orders/1234

代わりは。違いは、URLに必須パラメーター---ページが壊れてしまうパラメーター---のみを入れたいということです。すべてのパラメータではありません。注文IDがないと注文ページを返すことができないため、URLに入力されます。

1つのページに両方を含めることができます。ばかげた例として、注文の配送追跡ページがある場合は、次のようなURLを使用できます。

/orders/1234/tracking?since=9%3a00

午前9時以降の追跡イベント(到着、出発)のみを表示します。

于 2013-03-20T02:38:24.183 に答える
0

実際には、クエリパラメータに検索/フィルタオプションを残すのが一般的な方法です。たとえば、Googleを見てください。
私の見解では、フィルター結果のseoに関心がある場合、またはこのページに人間にわかりやすいURLが必要な場合を除いて、可能なフィルターのルートをサポートする意味はありません。

于 2013-03-14T04:29:28.410 に答える