2011-10-20 20 views
1

Hy!MVC3ルーティングの問題(アトリビュート名を隠す)

 public ViewResult Hotel(string hotelSupplierCode, bool displayAllRooms, bool resend) 
    { 
     HotelModel model; 
     if (resend) 
     { 
      model = (HotelModel)Session["HotelDetails"]; 
      HotelManager.ResendHotel(model.Hotel.Id); 
      model.Hotel.Status = 1; 
     } 
     else 
     { 
      model = HotelModel.GetGotel(hotelSupplierCode, displayAllRooms); 
     } 
     Session["HotelDetails"] = model; 
     return View("Hotel", model); 
    } 

と、このルート: 私はこのコントローラを持って

http://localhost:49575/Hotel/Hotel?hotelSupplierCode=3711&displayAllRooms=False&resend=False 

私:

routes.MapRoute(
      "Hotel", // Route name 
      "{controller}/{action}/{hotelSupplierCode}/{displayAllRooms}/{resend}", // URL with parameters 
      new { controller = "Hotel", action = "Hotel", hotelSupplierCode = UrlParameter.Optional, displayAllRooms = UrlParameter.Optional, resend = UrlParameter.Optional } 

問題は、私はビューにアクセスするときに返されたURLは、そのようなsoemthingであるということですそのようなものが欲しい:

http://localhost:49575/Hotel/Hotel/3711/False/False 

どのように私は属性名を隠すことができますか?私は2番目のURLを手動で置く場合、それはうまく動作します。この

routes.MapRoute(
      "Hotel", 
      "Hotel/Hotel/{hotelSupplierCode}/{displayAllRooms}/{resend}", 
      new { controller = "Hotel", action = "Hotel" }, 
      new { hotelSupplierCode = @"\w+",displayAllRooms = @"\w+", resend= @"\w+"} 
     ); 

答えて

0

よう

+0

問題を解決しました。私はあなたにビールを持っています... – MariusM

+0

素晴らしい!いつ、どこで収集しますか?冗談だ。 – counsellorben

0

てみルートは、私はあなたの問題は、あなたのルートの順序によるものであると思われます。ルートは、最も具体的なものから最も一般的なものの順に配置する必要があります。通常は、新しいプロジェクトで定義されたデフォルトルートで終わります。

デフォルトルートの前にホテルルートを配置してください。

+0

同じ問題... – MariusM