Подтвердить что ты не робот

System.Web.Mvc.HtmlHelper 'не содержит определения для ActionLink.

Я хотел бы использовать custom @Html.ActionLink

Я пытаюсь использовать следующий код: -

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);
    }
}

Из Пользовательский помощник ActionLink, который знает, на какой странице вы находитесь

Но я получаю

System.Web.Mvc.HtmlHelper 'не содержит определения для "ActionLink" и никакой метод расширения "ActionLink", принимающий первый аргумент типа "System.Web.Mvc.HtmlHelper" можно найти (вы отсутствует директива using или ссылка на сборку?

4b9b3361

Ответ 1

Добавьте этот using System.Web.Mvc.Html; поверх вашего файла

Ответ 2

Убедитесь, что у вас есть пространство имен для вашего класса расширений, включенных в ваш web.config. Например:

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

На вашем сайте Web.config и/или Web.config находится в папке "Представления":

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

В противном случае включите блок "using" для пространства имен в верхней части страницы просмотра, но для общих пространств имен я бы сделал выше.

ASPX:

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

RAZOR:

@using MyProject.Extensions

Ответ 3

Убедитесь, что вы используете в своем файле класс:

using System.Web.Mvc.Html;

Это необходимо, потому что класс HtmlHelper находится в пространстве имен System.Web.Mvc, но метод расширения ActionLink находится в пространстве имен System.Web.Mvc.Html.