0

OK、MVC 3ルーティングの質問/回答の代表的なサンプルを調べて、質問の80%に回答しました。良いことですが、今では最も難しい部分は未解決のままです。

私の世界では、URL localhost / Location/ Guidがあります

デフォルトルートの前に入力したこのルートに基づいて、うまく機能します。

routes.MapRoute(
    "Location",
    "Location/{id}",
    new { controller = "Location", action = "Details", id = System.Guid.Empty }
);

表示したい場所のGUIDを渡すことはできますが、それはまったくのFUGLYです。URLがアドレスバーに表示され、ページ内でlocalhost / Location/Parisとしてリンクされていることを確認したいのですが。

もちろん、パラメータを文字列に変更して「Paris」を渡すことはできますが、Guidを使用せずに、テキサス州パリスではなくフランスパリスが必要であることをデータベースに理解させる方法がわかりません。

差し迫った問題を解決するだけでなく、ルーティング全般をよりよく理解するためにも、これについては本当に助けが必要です。私は自分のニーズに十分に対応できると思っていましたが、明らかにそうではありません。

前もって感謝します!

4

1 に答える 1

2

フランスのパリとテキサス州のパリの間で曖昧さを解消するには、URLに何かを入力する必要があります。

  1. ルートパターンを`/Location / {country} / {region} / {city}'に設定するか、アプリケーション内のすべての可能な場所をスラッグ化することができます
  2. これらのロケーションスラッグを使用します/Location/{locationSlug}。「パリ」という名前の場所が複数ある場合は、それらをスラッグ化し、最後に自動インクリメント#を追加します(例:/ Location / paris、/ Location / paris-1、/ Location / paris-2)。または、#の代わりに地域/都市/国の情報をスラッグに追加して曖昧さを解消することもできます。
  3. IDを持っている場合は、オーバーフローの質問スタイルをスタックし、次にロケーションスラッグをスタックしますか。GUIDを整数に変換またはマップできる場合は、より美しく簡潔に見えるため、パターンは次のようになりますLocation/{id}/{locationSlug}(例:/ Location / 1245 / paris)。
于 2012-04-17T00:36:21.503 に答える