Question

J'ai une question concernant RouteLink contre ActionLink.

Considérez l'itinéraire suivant

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

La partie bizarre {} SomeEnum est parce que j'utilise un contrôleur général pour toutes les valeurs d'un ENUM qui forment la partie du contrôleur typique d'une URL. Par exemple, / EnumVal1 / Action / et / EnumVal2 / Action / utiliser le même contrôleur. Ce ne fait pas partie du problème, cependant.

Considérons les deux façons de relier suivantes:

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

Le RouteLink génère l'adresse correcte, ce qui serait / EnumVal1 / SpecificAction / 32 / Yatzy

Le ActionLink génère une URL qui ressemble à / EnumVal1 / SpecificAction / 32? StringID = Yatzy

Pourquoi est-ce? Quelqu'un pourrait-il me l'expliquer, s'il vous plaît.

Était-ce utile?

La solution

RouteLink href="http://blogs.teamb.com/craigstuntz/2009/03/18/38085/" rel="nofollow noreferrer"> ne peut jamais utiliser une route que vous spécifiez . ActionLink utilisera la première route correspondant, que ce soit celui que vous vouliez ou non. Vos deux exemples répondent probablement différents itinéraires.

débogueur de routage de Phil Haack contribuerait à clarifier cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top