2011-12-26 17 views
0

私はサイトを持っていて、URLはこのように見えます。MVCルーティングが機能しない

Home/LocationPage?locationId=f25a9ba4-54dc-4e6a-bdbf-094a5a6f7801 

私はそれが似ていることを望みます。

このようなマッピングルートを試しました。

 routes.MapRoute(
      "Location", 
      "{Controller}/{LocationName}", 
      new { controller = "Home", action = "LocationPage", LocationName = "" } 

しかし、URLをまったく変更できないようです。

+0

ルーティングはURLを変更しません。 URLを追加します。リダイレクトしますか? – SLaks

+0

いいえ、URLにカスタムパスを反映させたい場合は – griegs

+0

ホーム/ My Restaurantに行くとどうなりますか?どのような正確な問題がありますか? – SLaks

答えて

0

あなたが作成したルートを維持しますが、さらにいくつか追加する必要があります。

データベース内のLocationNameルートパラメータをルックアップし、見つかった場合はlocationIdパラメータをルートに追加するルート制約を追加するか(コントローラのOnActionExecutingメソッドをオーバーライドするか、アクションメソッドに属性を追加する)パラメーター。次に、locationIdを取るLocationPageという名前のアクションを作成します(ロケーション名はオプションです)。

あなたは素晴らしいURLを取得しますが、アクションはルックアップを行う必要はありません。

0

あなたActionLocationIdというパラメータを受け取った場合、あなたはあなたのルートを変更する必要があります。

routes.MapRoute(
      "Location", 
      "{Controller}/{LocationId}", 
      new { controller = "Home", action = "LocationPage", LocationId = "" } 

そして、あなたがすべき、その後、このようにあなたがGuidとして、このパラメータを取得しないことを忘れないでください指定された名前でGuid値を取得するロジックを作成します。

関連する問題