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?
4 réponses
ajoutez ce using System.Web.Mvc.Html;
en haut de votre fichier
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
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
.
si vous utilisez nopcommerce ajouter cette déclaration d'utilisation en haut de votre fichier de vue.
@using Nop.Web.Framework.UI