web-dev-qa-db-ja.com

System.Web.Mvc.HtmlHelper 'には' ActionLink 'の定義が含まれていません

カスタム@ 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);
    }
}

From 現在のページを知っているカスタムActionLinkヘルパー

しかし、私は得ています

System.Web.Mvc.HtmlHelper 'には' ActionLink 'の定義が含まれておらず、タイプ' System.Web.Mvc.HtmlHelper 'の最初の引数を受け入れる拡張メソッド' ActionLink 'が見つかりません(usingディレクティブまたはアセンブリ参照?

25
Mohit Kumar

これを追加 using System.Web.Mvc.Html;ファイルの先頭

48
krolik

拡張クラスの名前空間がweb.configに含まれていることを確認してください。例えば:

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

「Views」フォルダーにあるWeb.configおよび/またはWeb.configサイトで:

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

それ以外の場合、ビューページの上部に名前空間の「使用」ブロックを含めることはできますが、一般的な名前空間では上記を行います。

ASPX:

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

かみそり:

@using MyProject.Extensions
16
John Culviner

クラスファイルで以下を使用していることを確認してください。

using System.Web.Mvc.Html;

HtmlHelperクラスはSystem.Web.Mvc名前空間にありますが、ActionLink拡張メソッドはSystem.Web.Mvc.Html名前空間にあるため、これが必要です。

6
tpeczek

Nopcommerceを使用している場合は、ビューファイルの上部にこのusingステートメントを追加します。

@using Nop.Web.Framework.UI
2
chris c

私の問題は、ビューに不完全な構文「@ Html.actionLink」があったことでした。アクションリンクの追加を開始し、別の方向に進んだようですが、部分的なアクションリンクを削除するのを忘れたため、上記と同じエラーが発生しました。がんばろう!

0
Al Nolan