【问题标题】:How to enable Intellisense in Html Helper with MVC3?如何使用 MVC3 在 Html Helper 中启用 Intellisense?
【发布时间】:2018-06-05 23:13:54
【问题描述】:

我基本上是跟着这篇文章的: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; 我得到智能感知,并且视图代码验证正常(没有红色下划线)。

如果我不在视图中引用它,而是在两个 web.config 文件中的一个或两个中引用它,我不会得到智能感知,@Html.Hello() 现在带有红色下划线。

现在最好的部分是,当我运行时,即使我根本没有在任何地方引用它,它也能完美呈现。理想情况下,我想在web.config 中引用它一次,并在视图中获取 Intellisense,而不在该视图中引用它。

更新:我猜某处缓存了一些东西。当它没有被任何地方引用时,它不会呈现。对不起。我仍然希望在视图中获得 Intellisense 和验证。

【问题讨论】:

    标签: asp.net-mvc-3 .net-4.0 html-helper


    【解决方案1】:

    如果您使用的是 Razor 视图引擎,则需要在 ~/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。否则你可能会骂微软。

    【讨论】:

    • @Dimskiy,如果您将正确的命名空间添加到~/Views/web.config,您的应用程序至少在您运行时可以工作。就 Intellisense 而言,正如我在回答中所说,这将取决于这是否是您的幸运日。通常它可以工作,但是...
    • 哈!所以关闭和重新打开 VS 做到了!我正要开始用头敲键盘。非常感谢!我想毕竟这是我的幸运日;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2012-11-26
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多