Проблема маршрутизации MVC3 (скрыть имя атрибута) - PullRequest
1 голос
/ 20 октября 2011

Hy! У меня есть этот контроллер:

      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);
    }

и этот маршрут:

 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 выглядит примерно так:

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

но я хочу что-то подобное:

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

Так, как я могу скрыть имена атрибутов? Если я добавлю второй URL вручную, он будет работать нормально.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Я подозреваю, что ваша проблема связана с порядком ваших маршрутов. Маршруты должны быть расположены в порядке от наиболее специфического до самого общего, обычно заканчивающегося маршрутом по умолчанию, определенным в новом проекте.

Убедитесь, что вы указали маршрут отеля до маршрута по умолчанию.

0 голосов
/ 20 октября 2011

Попробуйте такой маршрут

routes.MapRoute(
            "Hotel",
            "Hotel/Hotel/{hotelSupplierCode}/{displayAllRooms}/{resend}",
            new { controller = "Hotel", action = "Hotel" }, 
            new { hotelSupplierCode = @"\w+",displayAllRooms = @"\w+", resend= @"\w+"}
        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...