2011-09-17 15 views
0

現在、私のプロジェクトにはすべてのカクテルのリストを表示するdomain/cocktailページがあります。ユーザーがリストをフィルタリングしたい場合、ソート順、カクテルの開始文字と強さを選択できます。したがって、URLはdomain/cocktail?letter=B&sort=nu&strength=2&page=4のようになります。ASP.NET MVC URL - 正しいアプローチ

私が読んだように、このようなURLを使用するのは最良の選択ではありません。どのようなアプローチは、同じ機能を持つSEOに優しいURLを取得することをお勧めできます。

答えて

0

ASP.NET MVCアプリケーションは、特定のコントローラとアクションにURLをマップする方法を決定するASP.NETルーティングシステムを使用します。

デフォルトのルーティングシステムでは、ブラウザがhttp://yoursite/Homeを要求すると、コントローラのactionメソッドからの出力が戻されます。したがって、あなたがバックエンドからのリストを導出するCoctailListアクションメソッドを使用している場合、ユーザーがあなたの状況ではhttp://yoursite/Controller/CoctailList

+0

今、私はインデックスアクションでCocktailControllerを持っています。したがって、そのような目的のためにIndexアクションを使用しない方が良いでしょうか?そして、私はパラメータで何をしますか?私がページパラメータだけを持っているなら、ドメイン/カクテル/ 3のように見えます。しかし、いくつかのパラメータでは、上記の私のポストのように見えます。 – ChruS

+0

ブラウザがhttp:// yoursite/Homeを要求したときに、HomeControllerのIndexメソッドからの出力を返します。したがって、ブラウザがhttp:// yoursite/ConctailControllerを要求すると、ConctailControllerからindex()メソッドが取得されます。 http:// yoursite/ConctailController/CockListFuncは、コントローラのCockListFuncを指します。したがって、すべてのcoctailsを表示するビューを返すCockListFuncを記述してください。モデルをコントローラにバインドして表示する必要があります。 –

0

で指定する必要があります、私は、検索条件をPOSTだろうが、私は次のようにURLの末尾にページを置く:

domain/cocktail/2 
domain/cocktail/3 

あなたはJSONオブジェクトを作成することで、データを投稿することができます:

var viewModel = new Object(); 
viewModel.Letter = "B"; 
viewModel.Sort = "nu"; 
$.post("/domain/cocktail/" + page, viewModel, function() { }); 
+0

'' Action''''''''は 'Sort''''''''''''''''''''などのプロパティを持つクラスです。このアクションを使用しようとすると、 ''/domain/cocktail/1''のURLに ''/cocktail/1'が見つかりません "というエラーが表示されます。私がオプションクラスのプロパティとしてページを渡す場合、私はOK応答を返しますが、何も起こりません(おそらく、アクションはViewとは異なる何かを返さなければなりません)? – ChruS