2010-01-02 11 views
7

¿Cómo funciona HtmlHelper.ActionLink (htmlhelper, string linktext, string action) determina la ruta correcta?Dado htmlHelper + nombre de acción, ¿cómo averiguar el nombre del controlador?

Si tengo este =>

HtmlHelper.ActionLink("Edit","Edit") 

MVC encuentra automáticamente la ruta correcta.

es decir, si el controlador era Producto, se hará anclar con href product/edit.

Entonces, ¿cómo averiguar el nombre del controlador cuando recibí htmlHelper + combinación de nombre de acción?

Respuesta

15

Si su HtmlHelper se ve algo como:

public static string MyHelper(this HtmlHelper htmlHelper, 
          ... some more parameters ...) { 

    return ... some stuff ... 
} 

Luego de su ayudante, el acceso:

RouteData routeData = htmlHelper.ViewContext.RouteData; 
string controller = routeData.GetRequiredString("controller"); 

El objeto RouteData contiene todos los valores que fueron procesadas por ASP.NET enrutamiento para el actual solicitud. Esto incluirá los nombres de los parámetros y los valores de la ruta, como "{controller}/{action}/{id}". Muchos de los asistentes incorporados de ASP.NET MVC obtienen datos "ambientales" a partir de ahí para que el desarrollador no tenga que escribirlos para cada ayuda que utilizan.

También puede descargar el código fuente completo para ASP.NET MVC desde aquí:

  1. ASP.NET MVC 1.0 RTM source code
  2. ASP.NET MVC 2 Release Candidate source code
+0

he visto/usado antes. Solo estoy confundido. Gracias. :) –

Cuestiones relacionadas