Frage

Ich bin neu auf MVC Land und haben eine Anwendung, die ich arbeite. Ich habe 2 verschiedene Links mit 2 Routen in meinem globalen, die ziemlich ähnlich sind

Route 1

routes.MapRoute("Category", "Movies/{category}/{subcategory}", 
    new { controller = "Catalog", action = "Index", category = "", subcategory = "" });

Route 2

routes.MapRoute("Movie", "Movie/{movie}", 
    new { controller = "Movie", action = "Index", movie = "" });

Wenn ich anrufen, um eine Action für die erste Route sie es schafft, wie ich es würde denken soll:

  

.../Movies/Category/SubCategory

aber wenn ich meine zweite Verbindung schaffen es auffüllt es wie folgt aus:

  

.../Movie?movieId=ff569575-08ec-4049-93e2-901e7b0cb96a

Ich war mit einem String statt einer GUID vor und es war immer noch die gleiche d.h tun.

  

.../Movie?movieName=Snatch

meine actionlinks werden wie folgt

<%= Html.ActionLink(parent.Name, "Index", "Catalog",
    new { category = parent.Name, subCategory = "" }, null)%>

<%= Html.ActionLink(movie.Name, "Index", "Movie", 
    new { movieId = movie.MovieId }, null)%>

Meine App funktioniert nach wie vor, aber ich dachte, dieses Verhalten war seltsam. jede Hilfe wäre toll.

Danke!

War es hilfreich?

Lösung

routes.MapRoute("Movie", "Movie/{movieId}", 
    new { controller = "Movie", action = "Index", movie = "" });

Sollte die Route Text nicht den Namen der Eigenschaft übereinstimmen, die Sie den mvc Link einreichen?

Andere Tipps

Das Problem ist, dass, wenn Sie Action nennen, das Routing-System nicht, welche der beiden Routen herausfinden kann, zu verwenden, so wählt er die erste. Die Lösung ist Routelink statt Action zu verwenden. Routelink können Sie den Namen der Route angeben zu verwenden, wenn die URI zu erzeugen. Dann gibt es keine Unklarheit über welche Route zu verwenden. Ich denke, dass Action veraltet ist. Ich kann mir keinen Grund denken, es zu benutzen anstatt der Routelink.

Sie können jedoch nach wie vor ein Problem haben, wenn der Benutzer Links einreicht. In diesem Fall Route Einschränkungen verwenden, um die Auswahl der richtigen Route zu erzwingen.

Andrew korrekt ist (up-Abstimmung), dass der Tokens Sie in Action / Routelink und die Strecke selbst verwenden müssen übereinstimmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top