/Comments/Search/3
のようなページがあり、スレッド「3」のすべてのコメントを検索して表示します。
ソート機能(日付、作成者など)を追加しています。それを処理する最良の方法は何ですか? /Comments/Search/3/Sort/Author
または/Comments/Search/3?sort=author
?
クエリ文字列sort = authorをMVCのパラメーターとして自動的に処理するにはどうすればよいですか?
ありがとう
私は好む:/ 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)を呼び出します
Idは必須なので、このURLは失敗します:/ Comments/Search
ASP.NET MVCは、クエリ文字列の場合にそれを自動的に処理します。アクションにstring sort
パラメーターを追加するだけです。
どちらが良いですか?個人的には、パスを使用してcontentsを表示し、クエリ文字列を使用してpresentation(表示、フォーマット、...)を制御します。したがって、並べ替えには、querystringメソッドを使用します。しかし、どちらのアプローチにも技術的な欠点はないと思います。
最善の策は、ルーティングルールを追加して処理することです。ここに便利な記事があります:
http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2
次に、URLは/ Comments/Search/3/Sort/Authorになります