Je souhaite utiliser @ Html.ActionLink personnalisé
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);
}
}
De assistant ActionLink personnalisé qui sait sur quelle page vous vous trouvez
Mais je reçois
System.Web.Mvc.HtmlHelper 'ne contient pas de définition pour' ActionLink 'et aucune méthode d'extension' ActionLink 'acceptant un premier argument de type' System.Web.Mvc.HtmlHelper 'n'a pu être trouvée (manque-t-il une directive ou une référence d'assemblage?
Ajoute ça using System.Web.Mvc.Html;
en haut de votre fichier
Assurez-vous que l'espace de noms de votre classe d'extensions est inclus dans votre web.config. Par exemple:
namespace MyProject.Extensions
{
public static class LinkExtensions
{
//code
}
}
Dans 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 "using" pour l'espace de noms en haut de votre page d'affichage peut fonctionner mais pour les espaces de noms courants, je ferais ce qui précède.
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 car la classe HtmlHelper
se trouve dans System.Web.Mvc
espace de noms mais la méthode d'extension ActionLink
se trouve dans System.Web.Mvc.Html
espace de noms.
Si vous utilisez nopcommerce, ajoutez cette instruction using en haut de votre fichier de vue.
@using Nop.Web.Framework.UI
Mon problème était, j'avais une syntaxe incomplète, "@ Html.actionLink", dans une vue. On dirait que j'avais commencé à ajouter un lien d'action et que je suis allé dans une direction différente mais j'ai oublié de supprimer le lien d'action partiel, cela a provoqué la même erreur que ci-dessus .... Vérifiez donc votre syntaxe car cela générera la même erreur d'exécution. Bonne chance!