2016-06-14 21 views
0

Ich bin neu in ASP.net MVCAsp.net MVC 5 Routing

Meine Strecke Config ist hier

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

In Seite /Russia/tours Ich habe einen Link hier ist der Code Zeile:

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

Wenn ich auf diese klicken, Seite Link zu dieser URL wäre: /Russia/Russia/tours/Itinerary/1

mit Fehler 404 http nicht gefunden.

Haben Sie eine Idee, warum ich zwei Russland habe und wie man es in 'TourDetailsController' mit 'TourId' verlinkt?

+3

perpend Mit einem '/'. Aber Sie sollten immer '@ Url.Action()' oder '@ Html.ActionLink()' verwenden, um die richtige URL zu generieren. –

+0

Können Sie diese Frage beantworten und mir sagen, wie Sie '@ Html.ActionLink()' in diesem Szenario genau verwenden? –

+0

Ich weiß nicht, wie ich Ihnen danken soll. Vielen Dank . –

Antwort

4

Sie müssten perpend ein / (Schrägstrich) an den href Wert - also so, dass seine href="/Russia/tours/Itinerary/1", aber man sollte immer die UrlHelper oder HtmlHelper Methoden verwenden Sie generieren Links

Mit Url.Action()

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

Mit Url.RouteUrl()

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

Mit 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

Ja Es funktioniert und wirklich, wirklich danke Ihnen für Ihre Hilfe und Ihr Wissen. –

+1

Nur ein Hinweis zu Pfaden mit "/ xxx" - der Stamm Ihrer Website befindet sich möglicherweise nicht immer im Stammverzeichnis des Webservers (insbesondere wenn Sie IIS-Anwendungen verwenden). Aus diesem Grund verwenden MVC Razor Views "~/images ..." usw. Wenn Sie einen Pfad zu "/ xxx" fest codieren und Ihre Site in "/ mysite" verschoben/deployt wird, sollte dies "/ mysite/xxx" und sein Der fest codierte Pfad wird nicht mehr funktionieren. Die Helfer (wie hier beschrieben) erledigen das für Sie. Benutze immer die Helfer. –