カスタム@ 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ディレクティブまたはアセンブリ参照?
これを追加 using System.Web.Mvc.Html;
ファイルの先頭
拡張クラスの名前空間が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
クラスファイルで以下を使用していることを確認してください。
using System.Web.Mvc.Html;
HtmlHelper
クラスはSystem.Web.Mvc
名前空間にありますが、ActionLink
拡張メソッドはSystem.Web.Mvc.Html
名前空間にあるため、これが必要です。
Nopcommerceを使用している場合は、ビューファイルの上部にこのusingステートメントを追加します。
@using Nop.Web.Framework.UI
私の問題は、ビューに不完全な構文「@ Html.actionLink」があったことでした。アクションリンクの追加を開始し、別の方向に進んだようですが、部分的なアクションリンクを削除するのを忘れたため、上記と同じエラーが発生しました。がんばろう!