42

/Comments/Search/3スレッド「3」のすべてのコメントを検索して表示するようにルーティングされたページがあります。

並べ替え関数(日付、作成者など)を追加しています。それを処理するための最良の方法は何ですか?/Comments/Search/3/Sort/Authorまたは/Comments/Search/3?sort=author

クエリ文字列sort=authorをMVCのパラメーターとして自動的に処理するにはどうすればよいですか?

ありがとう

4

3 に答える 3

59

私は好きです:/ Comments / Search / 3?sort=author。クエリ文字列は、特にパラメータ(この場合のように)がSEOの目的にとって重要でない場合に、プログラムパラメータを渡すのに適した場所です。パラメータが検索語として意味的な意味を持っている場合は、最初のURLの方が適しています。

コントローラメソッドでは、次のようなものを使用できます。

public ActionResult Search(int id, string sort)

ASP.NET MVCは、クエリ文字列の値をメソッドのパラメーターに自動的に接続します。

次のルートを使用します

routes.MapRoute(
                   "Default",                                              // Route name
                   "{controller}/{action}/{id}",                           // URL with parameters
                   new { controller = "Comments", action = "Search", id = "" }  // Parameter defaults
               );

/ Comments / Search / 3?sort = authorはSearch(3、 "author")を呼び出します

/ Comments / Search / 3はSearch(3、null)を呼び出します

このURLは失敗するため、idは必須であることに注意してください:/ Comments / Search

于 2009-06-09T08:48:19.287 に答える
20

ASP.NET MVCは、クエリ文字列の場合にそれを自動的に処理します。string sortアクションにパラメーターを追加するだけです。

どちらが良いですか?個人的には、パスを使用して表示されるコンテンツを制御し、クエリ文字列を使用してプレゼンテーション(表示、フォーマットなど)を制御します。したがって、並べ替えには、querystringメソッドを使用します。しかし、どちらのアプローチにも技術的な欠点はないと思います。

于 2009-06-09T08:48:06.180 に答える
2

最善の策は、それを処理するためのルーティングルールを追加することです。ここに便利な記事があります:

http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2

次に、URLは/ Comments / Search / 3 / Sort/Authorになります

于 2009-06-09T08:48:59.377 に答える