28

カスタムの@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'の定義が含まれておらず、タイプ'System.Web.Mvc.HtmlHelper'の最初の引数を受け入れる拡張メソッド'ActionLink'が見つかりませんでした(usingディレクティブまたはアセンブリリファレンス?

4

6 に答える 6

53

using System.Web.Mvc.Html;これをファイルの上に追加します

于 2012-10-02T14:24:18.343 に答える
18

拡張クラスの名前空間が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>

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

ASPX:

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

かみそり:

@using MyProject.Extensions
于 2012-10-02T14:24:13.570 に答える
8

最初のパラメータは文字列のみを受け入れることを忘れないでください。そうでない場合は、このエラーが表示されます。

于 2019-11-08T18:56:43.883 に答える
7

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

using System.Web.Mvc.Html;

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

于 2012-10-02T14:24:37.780 に答える
2

nopcommerceを使用している場合は、ビューファイルの先頭にこのusingステートメントを追加してください。

@using Nop.Web.Framework.UI
于 2018-04-17T04:57:50.847 に答える
0

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

于 2019-05-29T13:11:38.303 に答える