System.Web.Mvc.HtmlHelper'不包含'ActionLink'的定义

时间:2012-10-02 14:14:51

标签: asp.net-mvc-3 asp.net-mvc-4 html.actionlink

我想使用自定义@ 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);
    }
}

来自Custom ActionLink helper that knows what page you're on

但我得到了

  

System.Web.Mvc.HtmlHelper'不包含的定义   'ActionLink'并没有扩展方法'ActionLink'接受第一个   可以找到'System.Web.Mvc.HtmlHelper'类型的参数(是吗?   缺少using指令或程序集引用?

6 个答案:

答案 0 :(得分:47)

在您的文件顶部添加此using System.Web.Mvc.Html;

答案 1 :(得分:16)

确保您的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" %>

RAZOR:

@using MyProject.Extensions

答案 2 :(得分:5)

确保您在课程文件中使用以下内容:

using System.Web.Mvc.Html;

这是必需的,因为HtmlHelper类位于System.Web.Mvc命名空间中,但ActionLink扩展方法位于System.Web.Mvc.Html命名空间中。

答案 3 :(得分:2)

如果您使用nopcommerce在视图文件的顶部添加此using语句。

>>> print image_date
[[[ 18  23  16]
  [ 31  32  24]
  [ 34  29  23]
  ..., 
  [ 97  73  49]
  [ 95  73  50]
  [ 94  72  49]]

 [[ 23  24  18]
  [ 30  30  22]
  [ 36  29  21]
  ..., 
  [ 98  74  50]
  [ 95  73  50]
  [ 95  73  50]]

 [[ 32  27  21]
  [ 34  29  23]
  [ 37  28  21]
  ..., 
  [ 94  72  48]
  [ 97  72  50]
  [ 97  72  50]]

 ..., 
 [[ 43  35  24]
  [ 46  36  26]
  [ 48  36  24]
  ..., 
  [ 47  31  18]
  [ 47  31  18]
  [ 47  30  20]]

 [[ 59  56  47]
  [ 59  55  46]
  [ 59  50  41]
  ..., 
  [ 49  33  20]
  [ 48  32  19]
  [ 48  32  19]]

 [[114 115 107]
  [104 104  96]
  [100  93  85]
  ..., 
  [ 48  32  19]
  [ 48  32  19]
  [ 47  31  18]]]

答案 4 :(得分:0)

我的问题是,在视图中语法“ @ Html.actionLink”不完整。看来我已经开始添加操作链接并朝不同的方向前进,但是忘记删除部分操作链接,这导致了与上述相同的错误。...因此,请检查语法,因为这将引发相同的运行时错误。祝你好运!

答案 5 :(得分:0)

不要忘记第一个参数仅接受字符串。如果不是,它将显示此错误。