2016-06-14 277 views
0

我在ASP.net MVC是新Asp.net MVC 5路由

我的路由配置是这里

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> 

当我点击这个,页面会链接到这个网址:/Russia/Russia/tours/Itinerary/1

因错误404未找到http。

你有什么想法,为什么我有两个俄罗斯,如何解决它与'TourId'的'TourDetailsController'链接?

+3

Perpend一个'/'。但是你应该总是使用'@ Url.Action()'或'@ Html.ActionLink()'来产生正确的URL。 –

+0

是否可以回答这个问题,并告诉我在这种情况下如何使用'@ Html.ActionLink()'? –

+0

我不知道该如何谢谢你。谢谢 。 –

回答

4

您需要perpend一个/(正斜杠)到href值 - 即,使得其href="/Russia/tours/Itinerary/1",但你应该总是使用UrlHelperHtmlHelper方法来生成你的链接

使用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 }) 
+0

是的它的工作原理,真的非常感谢您的帮助和知识。 –

+1

只需注意有关“/ xxx”的路径 - 网站的根目录可能并不总是位于网络服务器的根目录(尤其是使用IIS应用程序)。这就是为什么MVC Razor浏览器使用“〜/ images ...”等等。如果你将路径硬编码为“/ xxx”,并且你的网站被移动/部署到“/ mysite”,那么它应该是“/ mysite/xxx”和硬编码路径将停止工作。助手(详见此处)为您处理。总是使用助手。 –