Pergunta

Eu tenho uma pergunta sobre o Routelink vs. ActionLink.

Considere a seguinte rota

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

A parte estranha {algumenum} é porque eu uso um controlador geral para todos os valores de uma enumeração que formam a parte do controlador típico de um URL. Por exemplo,/enumval1/ação/e/enumval2/ação/use o mesmo controlador. Isso não faz parte do problema, no entanto.

Considere as duas maneiras a seguir de vincular:

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

O Routelink gera o URL correto, que seria/enumval1/specificaction/32/yatzy

O ActionLink gera um URL que se parece/enumval1/specificaction/32? Stringid = yatzy

Por que é isso? Alguém poderia me explicar isso, por favor.

Foi útil?

Solução

RouteLink só pode usar a única rota que você especificar. ActionLink Usará a primeira rota correspondente, seja a que você pretendia ou não. Seus dois exemplos provavelmente estão combinando rotas diferentes.

Depurador de roteamento de Phil Haack ajudaria a esclarecer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top