Système.Web.Mvc.HtmlHelper "ne contient pas de définition de "ActionLink"

j'aimerais utiliser custom @Html.ActionLink

j'essaie d'utiliser le code suivant: -

public static class LinkExtensions
{
    public static MvcHtmlString MyActionLink(
        this HtmlHelper htmlHelper, 
        string linkText, 
        string action, 
        string controller)
    {
        var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
        var currentController = mlHelper.ViewContext.RouteData.GetRequiredString("controller");

        if (action == currentAction && controller == currentController)
        {
          var anchor = new TagBuilder("a");
          anchor.Attributes["href"] = "#";
          anchor.AddCssClass("currentPageCSS");
          anchor.SetInnerText(linkText);
          return MvcHtmlString.Create(anchor.ToString());
         }

         return htmlHelper.ActionLink(linkText, action, controller);
    }
}

à Partir de Personnalisé ActionLink assistant, qui sait à quelle page vous êtes sur

Mais je suis

Système

.Web.Mvc.HtmlHelper' ne contient pas de définition pour "ActionLink" et aucune méthode d'extension "ActionLink" accepter une première argument de type 'Système.Web.Mvc.HtmlHelper' a pu être trouvé (êtes-vous manque une directive using ou une référence d'assembly?

23
demandé sur Community 2012-10-02 18:14:50

4 réponses

ajoutez ce using System.Web.Mvc.Html; en haut de votre fichier

45
répondu krolik 2012-10-02 14:24:18

assurez-vous que vous avez l'espace de noms pour votre classe extensions inclus dans votre web.config. Par exemple:

namespace MyProject.Extensions
{
    public static class LinkExtensions
    {
        //code
    }
}

sur votre site Web.config et / ou Web.config situé dans votre dossier "Vues":

  <system.web>
    <pages>
      <namespaces>
        <add namespace="MyProject.Extensions" />
      </namespaces>
    </pages>
  </system.web>

sinon inclure un bloc" utiliser " pour l'espace de noms en haut de votre page de vue peut fonctionner mais pour les espaces de noms communs je ferais le ci-dessus.

ASPX:

<%@ Import namespace="MyProject.Extensions" %>

rasoir:

@using MyProject.Extensions
16
répondu John Culviner 2013-02-25 21:51:05

assurez-vous que vous avez l'utilisation suivante dans votre fichier de classe:

using System.Web.Mvc.Html;

cela est nécessaire parce que la classe HtmlHelper est située dans l'espace de noms System.Web.Mvc mais la méthode d'extension ActionLink est située dans l'espace de noms System.Web.Mvc.Html .

5
répondu tpeczek 2012-10-02 14:24:37

si vous utilisez nopcommerce ajouter cette déclaration d'utilisation en haut de votre fichier de vue.

@using Nop.Web.Framework.UI
2
répondu chris c 2018-04-17 04:57:50