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?

Cara
fonte

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.

Chad Moran
fonte
+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 ...).

Tomas Aschan
fonte
19

Além das outras respostas fornecidas aqui, o RouteLink é um pouco mais rápido e não pode corresponder à rota errada porque você alterou sua tabela de roteamento.

Craig Stuntz
fonte
1
Simone Chiaretta fez algumas análises de desempenho aqui: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
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!

Simon Steele
fonte