提问者:小点点

名称“viewbag”在当前上下文中不存在-Visual Studio 2015


我再次开始在ASP.NET中进行开发,但在Visual Studio中遇到了一个小错误。我的.cshtml文件在使用一些razor函数时显示错误。例如“名称'viewbag'在当前上下文中不存在”。这里有一张图片:

我正在使用一个演示项目。您可以在这里找到这个项目:https://github.com/wintellight/angula-mvc-cookbook/tree/master/basicproject

我查看了其他几个线程,大多数都建议更新web.config文件。这两个配置文件已经存在了,由于它是一个相当流行的演示,我假设它包含了所有所需的配置。当然,我已经查看了这些配置文件,它们确实包含了建议的解决方案。

其他详细信息:

  • 我已经在解决方案上使用了clean&rebuild,但这没有什么改变。
  • 当我创建一个全新的MVC项目时,它确实起作用
  • 我的朋友也有同样的问题,我们都使用VS 2015和Windows 10
  • 我仍然可以运行该应用程序,并且它确实可以运行。

提前道谢。


共2个答案

匿名用户

我有这个问题,尽管有所有正确的配置。

结果是组件缓存中的一些坏文件,阻止了Razor视图识别ViewBag、Model和HTMLHelpers。删除这些文件解决了问题(下次打开Visual Studio时会创建这些文件的好版本)。

文件位于以下位置:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

删除所有四个文件:

  • Microsoft.VisualStudio.Default.Cache
  • Microsoft.VisualStudio.Default.Catalogs
  • Microsoft.VisualStudio.Default.Err
  • Microsoft.VisualStudio.Default.External

我随后在其他几台开发人员机器上看到了相同的问题,这个修复程序很快就解决了这个问题。

匿名用户

更新Views文件夹中web.config文件设置中的版本号。

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

如果您已经通过nuget更新了MVC版本,那么应该是:

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

其他依赖项版本可能也需要更新。MVC帮助程序和对象视图中的编译和命名空间问题通常与视图文件夹中乱七八糟的web.config文件有关。