Ho una domanda riguardante RouteLink e ActionLink.Perché RouteLink genera URL amici mentre ActionLink no?
Si consideri il seguente percorso
routes.MapRoute("Routename1",
"{someEnum}/SpecificAction/{id}/{stringId}",
new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
new { someEnum= "(EnumVal1|EnumVal2)" }
);
La parte strana {} someEnum è perché io uso un regolatore generale per tutti i valori di un enum che formano la parte tipica di controllo di un URL. Ad esempio,/EnumVal1/Action/e/EnumVal2/Action/utilizzano lo stesso controller. Questo non fa parte del problema, comunque.
considerare le seguenti due modi di collegamento:
<%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%>
<%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>
Il RouteLink genera l'URL corretto, il che sarebbe/EnumVal1/SpecificAction/32/Yatzy
L'ActionLink genera un URL che assomiglia a/EnumVal1/SpecificAction/32? StringId = Yatzy
Perché è questo? Qualcuno potrebbe spiegarmelo, per favore.
Ciao. Questo è stato anche il mio pensiero iniziale, ma quando ho inserito l'URL specificato nel debugtool, ad esempio:/EnumVal1/SpecificAction/32/Yatzy, - corrisponde allo stesso percorso che uso per RouteLink (è anche l'unica rotta che corrisponde). – Terje
Stai confondendo l'analisi dell'URL con la generazione di link. Sono due lati diversi della moneta di routing. L'analisi dell'URL funziona non significa che la generazione di 'ActionLink' abbinerà anche la rotta che ci si aspetta. –
Oh. Come dovrei usare il debugger di routing per vedere il lato destro della moneta? :) – Terje