Qual é a diferença entre RouteLink e ActionLink na ASP.NET MVC?


120

Acho que o título resume tudo:

Qual é a diferença entre RouteLink()e ActionLink()na ASP.NET MVC?

ou seja, quando você usa Html.RouteLink()e quando você usa Html.ActionLink()em sua visualização?

Respostas:


78

Ação e Rotas não precisam ter uma relação 1: 1.

ActionLink irá gerar o URL para chegar a uma ação usando a primeira rota correspondente por nome de ação.

O RouteLink irá gerar um URL para uma rota específica determinada pelo nome ou pelos valores da rota.


+1 para uma ótima postagem no blog. Muito útil. E mostra que há possibilidades demais. Os caras do MS devem implementar apenas o mais rápido. Mas as pessoas preferem usar o lambda mais lento.
Robert Koritnik

hey obrigado Mas acho que o link está quebrado não alcançou. por
favor

5
podemos obter exemplos?
MaylorTaylor

67

Na verdade, a saída dos dois métodos é a mesma, mas é gerada de maneiras ligeiramente diferentes:

Html.ActionLink()torna mais fácil gerar ActionLinks rapidamente e lhe dará controle básico sobre o que é renderizado. Se você não tiver muitas rotas ou não precisar fornecer muitas informações ou informações muito específicas, isso fará o trabalho perfeitamente.

O Html.RouteLink()método aceita argumentos ligeiramente diferentes e, portanto, oferece um controle um pouco mais detalhado sobre a maneira como as coisas são tratadas. Costumo usar esse método quando meu cenário é um pouco mais complicado ou quando tenho uma estrutura de rota mais detalhada.
Um exemplo é um projeto recente onde eu (por flexibilidade) preferia ter várias rotas diferentes, que eram todas bastante simples, do que uma complexa que permitiria muitas informações. Assim, acabei com quatro ou cinco rotas para o mesmo Controlador, todas com uma ação padrão especificada. Usei principalmente a RouteLinkversão, porque quando especifiquei um nome de rota, os parâmetros padrão foram inseridos automaticamente.

Use-os como desejar e como fizerem sentido para o seu projeto. Não há realmente nenhum lado positivo / negativo para nenhum deles (que não é correspondido por algum outro ...).



12

O RouteLink usa o nome de uma rota, portanto, se os nomes de sua rota forem confiáveis ​​e razoavelmente exclusivos, será o mesmo, mesmo que o nome da ação a ser usada seja alterado. O ActionLink se vincula a uma ação específica de um controlador específico. Eu uso ambos nas minhas visualizações, dependendo do tipo de link que procuro!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.