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