2009-05-14 10 views

Respuesta

72

La acción y las rutas no tienen que tener una relación 1: 1.

ActionLink generará la URL para acceder a una acción utilizando la primera ruta coincidente por nombre de acción.

RouteLink generará una URL para una ruta específica determinada por nombre o valores de ruta.

+0

+1 para una excelente publicación de blog. Muy útil. Y muestra que hay demasiadas posibilidades. Los chicos de MS solo deberían implementar el más rápido. Pero la gente prefiere usar el elegante lambda más lento. –

+0

hola gracias Pero creo que el enlace está roto no llegó. pls me dará de nuevo el enlace gracias – user1006544

+4

¿podemos obtener ejemplos? – MaylorTaylor

12

RouteLink toma el nombre de una ruta, por lo que si sus nombres de ruta son confiables y bastante únicos, esto será el mismo aunque cambie el nombre de la acción que se utilizará. En su lugar, ActionLink se vincula a una acción específica de un controlador específico. ¡Utilizo ambos en mis puntos de vista, dependiendo de qué tipo de enlace estoy buscando!

63

En realidad, la salida de los dos métodos es el mismo, pero se genera de forma ligeramente diferente:

Html.ActionLink() hace que sea fácil de generar ActionLinks rápido, y le dará un control básico de lo que está representado. Si no tiene demasiadas rutas, o no necesita dar demasiada información o información muy específica, esto hará el trabajo bien.

El método Html.RouteLink() toma argumentos ligeramente diferentes, y por lo tanto le da un control un poco más detallado sobre la manera 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 I (por flexibilidad) tenía varias rutas diferentes, todas bastante simples, que una compleja que permitía 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 versión RouteLink, porque cuando especificaba un nombre de ruta, los parámetros predeterminados se ingresaban automáticamente.

Úselos como lo desee, y como tienen sentido para su proyecto. Realmente no hay un lado positivo/negativo para ninguno de ellos (que no se corresponde con ningún otro ...).

19

Además de las otras respuestas dadas aquí, RouteLink es un poco más rápido, y nunca puede coincidir con la ruta incorrecta porque ha cambiado su tabla de enrutamiento.

+1

Simone Chiaretta hizo algunos análisis de rendimiento aquí: http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry

Cuestiones relacionadas