Frage

Ich habe eine Frage bezüglich Routelink vs. Action.

Betrachten Sie die folgende Route

routes.MapRoute("Routename1",
    "{someEnum}/SpecificAction/{id}/{stringId}",
    new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
    new { someEnum= "(EnumVal1|EnumVal2)" }
);

Der seltsame {SomeEnum} Teil ist, weil ich eine allgemeine Steuerung für alle Werte eines Aufzählungs verwenden, die den typischen Controller Teil einer URL bilden. Zum Beispiel / EnumVal1 / Action / und / EnumVal2 / Action / verwenden die gleichen Controller. Das ist nicht Teil des Problems, aber.

Beachten Sie die folgenden zwei Möglichkeiten zur Verknüpfung:

<%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%> 
<%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>

Der Routelink generiert die richtige URL, die / wäre EnumVal1 / SpecificAction / 32 / Knobeln

Die Action erzeugt eine URL, das aussieht wie / EnumVal1 / SpecificAction / 32? StringID = Knobeln

Warum ist das? Könnte jemand mir dies erklären, bitte.

War es hilfreich?

Lösung

RouteLink href="http://blogs.teamb.com/craigstuntz/2009/03/18/38085/" rel="nofollow noreferrer"> kann immer nur verwenden, um die eine Route, die Sie angeben . ActionLink wird die erste passende Route verwenden, ob es derjenige ist, Sie oder nicht beabsichtigt. Ihre zwei Beispiele passen wahrscheinlich verschiedene Routen.

Phil Haack Routing-Debugger würde helfen, klären dies.

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