VS 2013 MVC 5区域视图中的HtmlHelper没有智能感知

时间:2014-08-29 10:34:54

标签: asp.net-mvc vb.net asp.net-mvc-5 intellisense html-helper

项目:VB.NET MVC5 w / EF6,MvcScaffolding和BootstrapEditorTemplates

从今天早上开始,我无法获得任何内置MVC助手的智能感知,也无法在 区域中的任意视图中获得自定义智能感知。 注意:我仍然可以看到Html.Encode和Htm.DropDownList(不是DropDownListFor<>)等。

如果我构建它我收到错误,但我仍然可以正确浏览应用程序并查看正确的编辑器和数据。

@ModelType Quotes4YouVB.Request
@Html.EditorFor(Function(model) model.Urgency)
@Html.EditorFor(Function(model) model.Message)

我在其他类似的错误中收到了以下错误。

  

' ModelType'没有宣布。由于它可能无法访问   保护水平。 ' ViewBag'没有宣布。它可能无法访问   由于其保护水平。 ' EditorFor'不是会员   ' System.Web.WebPages.Html.HtmlHelper&#39 ;. ' ValidationMessageFor'不是一个   &Systems.Web.WebPages.Html.HtmlHelper'。

的成员

我已经尝试了所有常见的嫌疑人:

  • 关闭并重新打开视图
  • 重启VS
  • 删除/ bin和/ obj
  • 工具/导入和导出设置/重置所有设置
  • 卸载MvcScaffolding,T4Scaffolding和T4Scaffolding.Core
  • 通过NuGet重新安装MVC 5.2以进行项目
  • NuGet:Update-Package

任何想法?看起来很奇怪它是/ Areas /特有的,它在〜/ Views / X / Y.vbhtml中完全正常

2 个答案:

答案 0 :(得分:4)

找到解决方案!我不确定为什么这个特定的东西会导致这个问题,但是和大多数VS问题一样,我不会过多地质疑它,只是要去吧哈哈。

它与 System.Web.WebPages.Razor Host FactoryType 部分有关。

我的〜/ Views / Web.config 包含以下内容:

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,
    System.Web.Mvc, Version=5.0.0.0, Culture=neutral,
    PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      ...
    </namespaces>
  </pages>
</system.web.webPages.razor>

特别是版本= 5.0.0.0 部分。因为我刚刚从NuGet重新安装了MVC 5.2.x,所以肯定它应该是5.2.0.0?

我检查了〜/ Areas / [AreaName] /Views/Web.Config中的Web.config,发现它的内容完全相同,只是它读取 Version = 5.2.0.0 :< / p>

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

我在两个文件中都尝试过,发现使用5.0.0.0然后所有智能感知都适用于那些视图

因此,解决方案:修改所有Web.config文件以使用兼容版本的factoryType。 (5.0.0.0适用于我,虽然5.2.0.0不适用)

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <!--<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.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="System.Web.Optimization" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

我真的不确定为什么会发生这种情况,如果有人有任何进一步的信息或更好的解决方案来使用5.2.0.0那么请分享:)

答案 1 :(得分:1)

我曾经遇到过这个问题。这解决了我的问题:

在Windows资源管理器中打开项目的输出文件夹(通常是项目根目录下的 bin 文件夹)并删除其中的所有内容。然后关闭解决方案并重新打开它。

希望有所帮助。