2010-03-04 22 views
29

Estoy diseñando un helper HTML personalizado y me gustaría ejecutar Html.ActionLink para proporcionar una generación dinámica de URL.Llamar a Html.ActionLink en un helper HTML personalizado

namespace MagieMVC.Helpers 
    { 
     public static class HtmlHelperExtension 
     { 
      public static string LinkTable(this HtmlHelper helper, List<Method> items) 
      { 
       string result = String.Empty; 

       foreach (Method m in items) 
       { 
        result += String.Format(
         "<label class=\"label2\">{0}</label>" + 
         System.Web.Mvc.Html.ActionLink(...) + 
         "<br />", 
         m.Category.Name,m.ID, m.Name); 
       } 

       return result; 
      } 


    } 
} 

Desafortunadamente Html.ActionLink no se reconoce en este contexto, cualquiera que sea el espacio de nombres que he tratado de declarar.

Como una pregunta genérica, me gustaría saber si es posible utilizar cualquier método de ayuda Html estándar/personalizado al diseñar una nueva ayuda personalizada.

Gracias.

Respuesta

54

¿No tienes el helper ya?

helper.ActionLink("text", "actionName"); 

No se olvide de incluir using System.Web.Mvc.Html espacio de nombres.

Y sí, podría usar los métodos de extensión existentes siempre que incluya los espacios de nombres necesarios.

+0

Gracias. Funciona ! Saludos. – Sylvain

+0

@Sylvain, De nada :) –

4

FYI, para MVC 3, encontré la ActionLink aquí:

System.Web.Mvc.Html.LinkExtensions.ActionLink(text, action, controller).ToHtmlString(); 
+0

El primer parámetro anterior debe incluir una referencia a htmlhelper ver a continuación –

+0

public static MvcHtmlString ActionLinkCustom (este System.Web.Mvc.HtmlHelper html, string menutext, string action, string controller) .... ... string link = System.Web.Mvc.Html.LinkExtensions.ActionLink (html, menutext, action, controller) .ToHtmlString(); –

Cuestiones relacionadas