问题
I would like to use custom @Html.ActionLink
I am trying to use the following code:-
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 Custom ActionLink helper that knows what page you're on
But I am getting
System.Web.Mvc.HtmlHelper' does not contain a definition for 'ActionLink' and no extension method 'ActionLink' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?
回答1:
Add this using System.Web.Mvc.Html;
on top of your file
回答2:
Make sure you have the namespace for your extensions class included in your web.config. For example:
namespace MyProject.Extensions
{
public static class LinkExtensions
{
//code
}
}
In your site Web.config and/or Web.config located in your "Views" folder:
<system.web>
<pages>
<namespaces>
<add namespace="MyProject.Extensions" />
</namespaces>
</pages>
</system.web>
Otherwise include a "using" block for the namespace at the top of your view page can work but for common namespaces I would do the above.
ASPX:
<%@ Import namespace="MyProject.Extensions" %>
RAZOR:
@using MyProject.Extensions
回答3:
Make sure that you have following using in your class file:
using System.Web.Mvc.Html;
This is needed because the HtmlHelper
class is located in System.Web.Mvc
namespace but the ActionLink
extension method is located in System.Web.Mvc.Html
namespace.
回答4:
If your using nopcommerce add this using statement at the top of your view file.
@using Nop.Web.Framework.UI
回答5:
My issue was, I had incomplete syntax, "@Html.actionLink", in a view. Looks like I had started to add an action link and went a different direction but forgot to remove the partial action link, this caused the same error as above.... So check your syntax as that will throw the same runtime error. Good luck!
回答6:
Don't forget that the first parameter only accepts string. It will show you this error if it's NOT.
来源:https://stackoverflow.com/questions/12692011/system-web-mvc-htmlhelper-does-not-contain-a-definition-for-actionlink