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

我又开始在ASP.NET中开发,并在Visual Studio中遇到了一个小错误。 使用一些razorfunction时,我的.cshtml文件显示错误。 例如“名称”ViewBag“在当前上下文中不存在”。 这是一张图片:

visual studio 2015中问题的截图

我正在使用一个演示项目。 你可以在这里find这个项目: https : //github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

我已经浏览了其他几个线程,大多数build议更新web.config文件。 这两个configuration文件已经存在,因为它是一个非常stream行的演示,我认为它有所有需要的configuration。 我当然会看看这些configuration文件,确实包含了build议的解决scheme。

其他详情:

  • 我已经使用清理和重build解决scheme,但没有改变。
  • 当我创build一个全新的MVC项目时,它确实有效
  • 我的朋友有同样的问题,我们都使用VS 2015和Windows 10
  • 我仍然可以运行该应用程序,它确实工作。

提前致谢。

尽pipe拥有所有正确的configuration,但我仍然遇到这个问题

原来是组件caching中的一些不良文件,阻止了Razor视图识别ViewBag,Model和HtmlHelpers 。 删除这些文件解决了这个问题(这些文件的好的版本是在我下次打开Visual Studio时创build的)。

这些文件位于:

C:\Users\your.name.here\AppData\Local\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帮助器和对象的视图中的编译和命名空间问题通常与View文件夹中的混乱web.config文件有关。

在Appsettings中find“网页:版本”,并将其更新到版本3.0.0.0。 我的web.config了

 <add key="webpages:Version" value="2.0.0.0" /> 

我更新到

 <add key=”webpages:Version” value=”3.0.0.0″ /> 

在阳光下尝试一切后,事实certificate已经修改我的System.Web.WebPages.Razor <sectionGroup>/Views/Web.Config从适当的CamelCase System.Web.WebPages.Razor /Views/Web.Config小写system.web.webpages.razor最终是我的死亡。

希望这可以帮助一些其他可怜的灵魂与这个问题…

作为参考,这是正确的条目(对于我的情况)

 <sectionGroup name="System.Web.WebPages.Razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 

有时在web.config的设置中更改版本号是不够的。 发生此问题是因为Visual Studio 2015没有mvc4工具。

解决scheme是将您的项目升级到MVC 5.它完全解决了这个问题。 你可以从这个页面获得帮助。 它清楚地解释它。

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- API-2

顺便说一句,Visual Studio团队声明他们会在第一次更新的时候为Visual Studio 2015添加mvc4支持。

在这一天的工作日里,我浪费了很多。 我尝试了这个(和其他)职位的一切,无济于事。 最终我发现我需要以不同的方式打开这个项目。 我刚刚升级了一个现有的网站到Visual Studio 2015,MVC5,.NET框架4.5.2,并且正在使用Windows 10,但是怀疑对于每个软件应用程序的其他版本,答案都是一样的。

所以这是我select打开网站的菜单选项:

在这里输入图像说明

相反,我使用这个菜单选项打开了定义项目的csproj文件:

在这里输入图像说明

然后,我有许多其他人提到的“干净的解决scheme”选项:

在这里输入图像说明

但是,我甚至不需要这个 – 一切都工作了! 那么,我已经遇到了下一个问题,反正…

迟到的游戏,但没有任何解决scheme为我工作。

我升级到VS 2017,和网站的工作,但Visual Studio编译器打破了大部分.cshtml文件

TLDR;

mysolution.sln有错误的版本

sln差异

所以你想用新的VS创build一个新的解决scheme,并将其与你的比较,并复制版本信息。

全面升级步骤:

  1. 确保.sln文件具有VS的正确版本
  2. 右键单击VS中的MySolution> Nuget Manager>更新>运行所有更新
  3. 在VS>应用程序>更新目标框架(4.5.2在我的情况下)右键单击MySolution
  4. 修复.config文件中的任何版本问题(即RAZOR到3.0.0.0)
  5. 修复编译器中的任何代码问题(ForEach是不明确的)

我能够通过将以下内容添加到我的.cshtml页面的顶部来解决此问题

 @{ViewBag.Title = "Title";} 

重新编译后,我可以删除这一行,错误消失了。

我不小心从View文件夹中删除了web.config ,认为这是不必要的。 当我把它放回去,它开始工作。

在尝试了其他所有东西之后,我感觉有点沮丧,我将MVC5应用程序中的.NET框架从4.5升级到了4.5.2。 不知怎的,它解决了我的问题。 希望能帮助到你。

把它关掉再一次为我工作。 您可以尝试重新启动Visual Studio。

我通过添加了控制器

  • 第1步:添加>类
  • 第2步:UserController

相应的代码创build:

 namespace SampleApp.Controllers { public class UserController { } } 

我的错误通过更改步骤1更改为:

  • 步骤1:添加>控制器
  • 第2步:用户控制器

相应的代码创build:

 namespace SampleApp.Controller { public class UserController : Controller { } } 

问题是:我没有从Controllerinheritance我的类

其他消息在我的错误包括 – 所有这些都是从这个问题:

错误CS0117:“ModelState”不包含“IsValid”的定义

错误CS0103:名称“RedirectToAction”在当前上下文中不存在

错误CS0103:当前上下文中不存在名称“视图”

错误CS0103:名称'ViewBag'在当前上下文中不存在

错误CS0103:名称'Json'在当前上下文中不存在

希望这个改变可以帮助那些在最初阶段没有注意到的人。

我解决了在web.config中的replace

  <add key="webpages:Enabled" value="false" /> 

  <add key="webpages:Enabled" value="true" />