为什么我的Html Helpers没有intellisense?

时间:2011-02-24 20:23:06

标签: asp.net-mvc

我无法为自己的html帮助程序获取intellisense。我的CustomHtmlHelpers.cs看起来像这样:

using System.Web.Mvc;
using System.Text;
using System.Web;

    namespace laget.Web.Helpers
    {
        public static class CustomHtmlHelpers
        {
            //MY HELPERS
        }
    }

并在我的Web.config中:

    <pages>
      <namespaces>
        <add namespace="laget.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
        <add namespace="System.Web.Helpers" />
      </namespaces>
    </pages>

如果我将<@using laget.Web.Helpers>放在我的视图中,我会解决智能感知问题。

Web.config中的代码是不够的?

9 个答案:

答案 0 :(得分:24)

有时它似乎不会马上起作用。尝试关闭.cshtml文件,然后重新打开它。然后,如果这不起作用,请尝试重新启动Visual Studio。另外,请确保您实际编译了您的项目,intellisense将无法与非编译助手一起使用。

答案 1 :(得分:6)

我很确定您没有编辑正确的Web.config文件。

您需要将名称空间添加到Views目录中的名称空间。

<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="laget.Web.Helpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

答案 2 :(得分:5)

在大多数情况下,您实际上不需要重新启动Visual Studio。您需要做的就是关闭.cshtml文件并重新打开它!

答案 3 :(得分:0)

它需要在本地页面上。我很确定这与命名空间解析有关。如果没有本地使用声明,它并不完全确定你所指的是什么。

答案 4 :(得分:0)

我今天也遇到了这个问题。有时只需在Visual Studio中关闭Razor视图的窗口并重新打开它就可以完成这一操作而无需重新启动Visual Studio。

答案 5 :(得分:0)

昨天我尝试解决这个问题。我有预编译的dll(项目名称,即:MyHtmlHelpers),其中包含帮助程序和许多其他类。

我在web项目中引用了程序集,并且所有“标准”-helpers都显示在intellisense中,但是,即使我在根目录和views-folder中的web.config中添加了名称空间也没有任何效果。运行项目帮助程序时,但不是智能感知。

我添加了一个新类,并在Web项目中编写了一个新的html帮助器,将命名空间添加到web.config中。这很有用。

几个小时后,添加了我的最后一张卡,将MyHtmlHelpers项目添加到与我的webproject相同的解决方案中。这就是诀窍。我不会在配置中更改任何内容,只是将项目添加到同一解决方案中,并将引用更改为指向编译后的dll项目。

那不奇怪吗? VS-bug?

答案 6 :(得分:0)

我发现我正在添加对错误的web.config的引用。它不是主配置,而是视图目录中的web.config ......

答案 7 :(得分:0)

所以现在我将向您展示步骤

1.创建或打开现有的类库项目(如果打开现有的项目,请确保删除MVC5 nuget包)

2.添加MVC(5.0)nuget包( 右键单击解决方案资源管理器中的项目 - &gt;管理NuGet包 - &gt;搜索MVC并安装“Microsoft ASP.NET MVC”)

3.关闭所有打开的.cshtml文件

4.右击项目 - &gt;属性 - &gt;构建 - &gt;更改项目“bin /”

的输出路径

5.将以下最小的Web.config添加到类库项目的根目录中 (网络配置文件仅用于智能感知。配置(通过Web.config) 应该在托管ClassLibrary程序集的WebApplication中完成)

6.清理并构建解决方案。

7.打开cshtml文件,立即尝试:)

答案 8 :(得分:0)

我发现如果它仍然不起作用,您可能需要转到自定义类的属性并从&#34;内容&#34;更改构建操作。 to&#34;编译&#34;。这解决了我。