¿Cuál es la diferencia entre RouteLink y ActionLink en ASP.NET MVC?

120

Creo que el título lo resume bastante bien:

¿Cuál es la diferencia entre RouteLink()y ActionLink()en ASP.NET MVC?

es decir, ¿cuándo lo usa Html.RouteLink()y cuándo lo usa Html.ActionLink()en su Vista?

Chico
fuente

Respuestas:

78

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.

Chad Moran
fuente
+1 para una excelente publicación de blog. Realmente útil. Y muestra que hay demasiadas posibilidades. Los chicos de MS solo deberían implementar lo más rápido. Pero la gente prefiere usar la elegante lambda más lenta.
Robert Koritnik
hola gracias Pero creo que el enlace está roto no se alcanzó. Por favor, ¿
podría
5
¿podemos obtener ejemplos?
MaylorTaylor
67

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 RouteLinkversió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 ...).

Tomas Aschan
fuente
19

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.

Craig Stuntz
fuente
1
Simone Chiaretta hizo un análisis de rendimiento aquí: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
12

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!

Simon Steele
fuente