Asp.net MVC 5 Маршрутизация

Я новичок в ASP.net MVC

Конфигурация моего маршрута здесь

    routes.MapRoute(
          name: "ItineraryRoute",
          url: "{country}/Itinerary/tours/{TourId}",
          defaults: new { controller = "TourDetails", action = "Index" }
      );

        routes.MapRoute(
           name: "TourRoute",
           url: "{country}/tours",
           defaults: new { controller = "Tour", action = "Index" }
       );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

На странице /Russia/tours У меня есть ссылка вот строка кода:

<a href="@ViewBag.Country/tours/Itinerary/@tour.Id">Day's By Detail's....</a>

Когда я нажимаю на эту страницу, страница становится ссылкой на этот URL: /Russia/Russia/tours/Itinerary/1

С ошибкой 404 http не найден.

У вас есть идея, почему у меня две России и как это исправить, чтобы связать в 'TourDetailsController' с 'TourId'?

1 ответ

Решение

Вам нужно будет разрешить / косая черта href значение - то есть, чтобы его href="/Russia/tours/Itinerary/1", но вы всегда должны использовать UrlHelper или же HtmlHelper способы генерировать вам ссылки

С помощью Url.Action()

<a href="@Url.Action("Index", "TourDetails", new { country = ViewBag.Country, tourID = tour.Id })">Day's By Detail's....</a>

С помощью Url.RouteUrl()

<a href="@Url.RouteUrl("ItineraryRoute", new { country = ViewBag.Country, tourID = tour.Id })">Day's By Detail's....</a>

С помощью Html.Action()

@Html.ActionLink("Day's By Detail's....", "Index", "TourDetails", new { country = ViewBag.Country, tourID = tour.Id }, null)

С помощью Html.RouteLink()

@Html.RouteLink("Day's By Detail's....", "ItineraryRoute", new { country = ViewBag.Country, tourID = tour.Id })
Другие вопросы по тегам