Помощник MVC3 не работает, не найден - PullRequest
0 голосов
/ 26 января 2012

Я создал следующий помощник в моей основной директории в / 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);
        }
    }
}

Я добавил пространство имен в файл Views.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» вам не хватает директивы using или ссылки на сборку?)

Core: @ Html.ActiveActionLink ("Панель инструментов", "Индекс", "Панель инструментов")

Кто-нибудь знает, что я делаю не так? Вряд ли есть какие-либо учебные пособия о том, как или где хранить помощника HTML. Может кто-нибудь, пожалуйста, посоветуйте мне?

Ответы [ 2 ]

1 голос
/ 26 января 2012

Core: @ Html.ActiveActionLink («Панель инструментов», «Индекс», «Панель инструментов») // здесь это проблема

так как ваш метод ActiveActionLinkHelper, вы вызываете другой метод.

@Html.ActiveActionLinkHelper("Dashboard", "Index", "Dashboard") // try like this. 
0 голосов
/ 26 января 2012

Компилятор прав. Ваш метод называется ActiveActionLinkHelper. Измените его на ActiveActionLink и все должно быть хорошо

...