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