Domanda

Ho una domanda per quanto riguarda RouteLink vs. ActionLink.

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 / Azione / e / EnumVal2 / Azione / utilizzare lo stesso controller. Questo non è parte del problema, tuttavia.

Si considerino i 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 spiegare questo a me, per favore.

È stato utile?

Soluzione

RouteLink href="http://blogs.teamb.com/craigstuntz/2009/03/18/38085/" rel="nofollow noreferrer"> può sempre e solo utilizzare quello percorso specificato . ActionLink utilizzerà il primo percorso corrispondente, che si tratti di quella desiderata oppure no. I suoi due esempi sono probabilmente abbinando percorsi diversi.

debugger di routing di Phil Haack avrebbe aiutato a chiarire questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top