2012-02-20 29 views
22

Estoy en el proceso de generar URL dinámicamente en mi página cshtml. ¿Cuál es la diferencia entre Url.RouteUrl() & Url.Action()?Diferencia entre Url.RouteUrl() y Url.Action() en MVC3

¿Cuál debería usar para generar la URL &? ¿Qué diferencia tienen ambos en términos de implementación?

Gracias de antemano.

Respuesta

45

RouteUrl generó la URL según el nombre de la ruta. Si tiene varias rutas con parámetros similares, el método Action puede elegir uno incorrecto; funciona según el orden de las definiciones de ruta. Esto puede ocurrir cuando sus rutas tienen parámetros opcionales.

Si desea asegurarse de que se utilizará una determinada URL de ruta, debe llamar al RouteUrl pasando el nombre de esta ruta. Los nombres de las rutas son únicos e identifican claramente una ruta.

Una diferencia más es que Action es MVC específico (usa nombres de controlador y acción), mientras que RouteUrl es genérico y puede usarse sin MVC (puede tener enrutamiento en WebForms).

16

Url.RouteUrl le permite especificar una ruta en particular por su nombre. Esto hará forzar el uso de esa ruta. Url.Action simplemente elegirá la primera ruta que coincida con los criterios.

+0

Esto también significa que Url.RouteUrl es mejor en términos de rendimiento que Url.Action – Ranganatha