2012-04-16 3 views
0

OK、私はMVC 3ルーティングの質問/回答の代表サンプルを探していましたが、私は自分の質問の80%を回答しました。良いことですが、今最も難しい部分は未解決のままです。私ができるMVC 3ルーティングコンフル

routes.MapRoute(
    "Location", 
    "Location/{id}", 
    new { controller = "Location", action = "Details", id = System.Guid.Empty } 
); 
:私の世界では

、私は、URLのlocalhostの/所在地/ のGuid

は、私は私のデフォルトルートの前に入力したこのルートのオフに基づいて、素晴らしい作品持っています私が表示したい場所のGUIDを渡しますが、それは右下です。私は本当にアドレスバーに表示されたURLを見たいと思うし、ページ内にリンクされている:localhost/Location/Paris

明らかに、私はパラメータを文字列に変更して "パリ"を渡すことができたデータベースを取得して、私がパリ、フランス、そしてパリ、テキサスではなく、Guidを使用しないことを理解する方法を理解していない。

私はすぐに問題を解決するだけでなく、一般的なルーティングをよりよく理解するために、この問題についていくつかの助けが必要です。私は自分のニーズに十分に対応していると思ったが、明らかにそうではない。

ありがとうございます!

答えて

2

あなたは、パリ、フランス、パリ、TXの間で明確にするためにURLに何かを入れる必要があります。

  1. あなたは「`/場所/ {国}/{地域}/{都市}であるためにあなたのルートパターンを設定することができ、あるいは、あなたのアプリケーション内のすべての可能な場所をslugifyでき
  2. は、それらの場所スラグを使用します。 /Location/{locationSlug}。 「パリ」という名前の場所が複数ある場合は、それらを扇状にして末尾に#を追加します(例:/ Location/paris、/ Location/paris-1、/ Location/paris-2)。または、地域/都市/国の情報をスラッグに追加して、#の代わりに曖昧さをなくすことができます。
  3. IDを持っているオーバーフロー質問スタイルと、スラグの位置をスタックします。 GUIDを整数に変換またはマップできる場合、パターンは次のようになります(Location/{id}/{locationSlug}(例:/ Location/1245/paris))。
+0

id、good callの後に無意味な記述子を追加することは考えられませんでした。 (はい、私はこのサイトを使っていますが) –

+0

人気のあるサイトの多くは#-at-the-end-appendのことです。 Wikipedia、Yelpなどがあります。 –