MVC3助手不工作,找不到

时间:2012-01-26 19:25:23

标签: asp.net asp.net-mvc-3 helpers

我在/ Helpers下的主目录中创建了以下帮助器:

HtmlHelpers.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace Website.Helpers
{
    public static class HtmlHelpers
    {
        public static MvcHtmlString ActiveActionLinkHelper(this HtmlHelper Html, string text, string action, string controller, string activeClass = "active", bool actionCheck = false)
        {
            if (Html.ViewContext.RouteData.GetRequiredString("controller") == controller)
            {
                if (actionCheck)
                {
                    if (Html.ViewContext.RouteData.GetRequiredString("action") == action)
                        return Html.ActionLink(text, action, controller, new { Class = activeClass });
                }
                else
                {
                    return Html.ActionLink(text, action, controller, new { Class = activeClass });
                }
            }

            return Html.ActionLink(text, action, controller);
        }
    }
}

我将名称空间添加到我的Publishers Areas文件夹中的Views web.config:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Website.Helpers" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

我一直收到这条消息: 编译器错误消息:CS1061:'System.Web.Mvc.HtmlHelper'不包含'ActiveActionLink'的定义,并且没有扩展方法'ActiveActionLink'接受类型'System.Web.Mvc.HtmlHelper'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)

核心:@ Html.ActiveActionLink(“仪表板”,“索引”,“仪表板”)

有谁知道我做错了什么?几乎没有关于如何或在何处存储HTML帮助程序的教程。有人可以告诉我吗?

2 个答案:

答案 0 :(得分:1)

核心:@ Html.ActiveActionLink(“仪表板”,“索引”,“仪表板”)//这里是问题

因为你的方法是ActiveActionLinkHelper,你的调用方法不同。

@Html.ActiveActionLinkHelper("Dashboard", "Index", "Dashboard") // try like this. 

答案 1 :(得分:0)

编译器是对的。你的方法名为ActiveActionLinkHelper。将其更改为ActiveActionLink,一切都应该正常