Как включить Intellisense в Html Helper с MVC3? - PullRequest
0 голосов
/ 08 апреля 2011

Я в основном следовал этой статье: http://develoq.net/2011/how-to-create-custom-html-helpers-for-asp-net-mvc-3-and-razor-view-engine/

Мой класс HtmlHelper находится в корневом каталоге моего проекта MVC:

using System.Web.Mvc;

namespace MvcHtmlHelpers
{
    public static class HtmlHelperExtensions
    {
        public static MvcHtmlString Hello(this HtmlHelper helper)
        {
            return new MvcHtmlString("Hello!");
        }
    }
}

Если я ссылаюсь на это в представлении: @using MvcHtmlHelpers; Я получаю intellisense и код представления проверяет отлично (без красного подчеркивания).

Если я не ссылаюсь на него в представлении, но ссылаюсь на него в одном или обоих файлах web.config, я не получаю intellisense, и @Html.Hello() теперь подчеркнуто красным.

Теперь самое приятное то, что когда я бегу, он прекрасно отрисовывается, даже если на него вообще не ссылаются. В идеале я хотел бы сослаться на него один раз в web.config и получить Intellisense в представлении, не ссылаясь на него в этом представлении.

ОБНОВЛЕНИЕ: Я думаю, что-то где-то кешируется Он НЕ рендерится, когда на него нигде нет ссылок. Мне жаль. Я все еще хотел бы получить Intellisense и подтверждение в виде.

1 Ответ

3 голосов
/ 08 апреля 2011

Если вы используете Razor View Engine, вам нужно ссылаться на него в ~/Views/web.config, а не в ~/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="MvcHtmlHelpers" />
      </namespaces>
    </pages>
</system.web.webPages.razor>

Затем перекомпилируйте, закройте и снова откройте Razor, и если вам повезетдень вы могли бы даже получить Intellisense.Если нет, вы можете проклинать Microsoft.

...