Respostas:
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.
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 RouteLink
versã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 ...).
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.
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!