Respuestas:
La acción y las rutas no tienen por qué tener una relación de 1: 1.
ActionLink generará la URL para llegar a una acción utilizando la primera ruta coincidente por nombre de acción.
RouteLink generará una URL a una ruta específica determinada por el nombre o los valores de la ruta.
En realidad, la salida de los dos métodos es la misma, pero se genera de formas ligeramente diferentes:
Html.ActionLink()
facilita la generación rápida de ActionLinks y le dará un control básico sobre lo que se representa. Si no tiene demasiadas rutas, o no necesita dar demasiada o información demasiado específica, esto funcionará bien.
El Html.RouteLink()
método toma argumentos ligeramente diferentes y, por lo tanto, le brinda un control un poco más detallado sobre la forma en que se manejan las cosas. Tiendo a usar este método cuando mi escenario es un poco más complicado o cuando tengo una estructura de ruta más detallada.
Un ejemplo es un proyecto reciente en el que yo (por flexibilidad) preferí tener varias rutas diferentes, todas bastante simples, que una compleja que permitiera mucha información. Por lo tanto, terminé con cuatro o cinco rutas para el mismo controlador, todas con una acción predeterminada especificada. Usé principalmente la RouteLink
versión, porque cuando especifiqué un nombre de ruta, los parámetros predeterminados se ingresaron automáticamente.
Úselos como desee y según tengan sentido para su proyecto. Realmente no hay ventajas o desventajas para ninguno de ellos (que no se compara con otros ...).
Además de las otras respuestas que se dan aquí, RouteLink es un poco más rápido y nunca puede coincidir con la ruta incorrecta porque cambió su tabla de enrutamiento.
RouteLink toma el nombre de una ruta, por lo que si los nombres de su ruta son confiables y bastante únicos, será el mismo incluso si cambia el nombre de la acción que se utilizará. ActionLink enlaza a una acción específica de un controlador específico en su lugar. ¡Utilizo ambos en mis vistas, dependiendo del tipo de enlace que busque!