Pregunta

Tengo una pregunta sobre RouteLink vs.Enlace de acción.

Considere la siguiente ruta

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

La parte extraña de {someEnum} se debe a que uso un controlador general para todos los valores de una enumeración que forman la parte típica del controlador de una URL.Por ejemplo, /EnumVal1/Action/ y /EnumVal2/Action/ usan el mismo controlador.Sin embargo, eso no es parte del problema.

Considere las siguientes dos formas de vinculación:

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

RouteLink genera la URL correcta, que sería /EnumVal1/SpecificAction/32/Yatzy

ActionLink genera una URL similar a /EnumVal1/SpecificAction/32?stringId=Yatzy

¿Por qué es esto?Alguien podría explicarme esto, por favor.

¿Fue útil?

Solución

RouteLink href="http://blogs.teamb.com/craigstuntz/2009/03/18/38085/" rel="nofollow noreferrer"> tan sólo puede utilizar la ruta que especifique . ActionLink utilizará la primera ruta coincidente, si se trata de la persona que intencional o no. Sus dos ejemplos son probablemente coincidentes diferentes rutas.

depurador de enrutamiento de Phil Haack ayudaría a aclarar esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top