当前上下文中不存在名称“ViewBag” – Visual Studio 2015
我又开始在ASP.NET中开发,并在Visual Studio中遇到了一个小错误。 使用一些razorfunction时,我的.cshtml文件显示错误。 例如“名称”ViewBag“在当前上下文中不存在”。 这是一张图片:
我正在使用一个演示项目。 你可以在这里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.它完全解决了这个问题。 你可以从这个页面获得帮助。 它清楚地解释它。
顺便说一句,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有错误的版本
所以你想用新的VS创build一个新的解决scheme,并将其与你的比较,并复制版本信息。
全面升级步骤:
- 确保.sln文件具有VS的正确版本
- 右键单击VS中的MySolution> Nuget Manager>更新>运行所有更新
- 在VS>应用程序>更新目标框架(4.5.2在我的情况下)右键单击MySolution
- 修复.config文件中的任何版本问题(即RAZOR到3.0.0.0)
- 修复编译器中的任何代码问题(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" />
- ASP.NET MVC体系结构:ViewModel是由构成,inheritance还是重复?
- MVC中UIHint属性的用法是什么
- ASP.NET MVC解释@section
- 不显眼的客户端validation使用fluentvalidation和asp.net mvc LessThanOrEqualTo不发射
- 没有MediaTypeFormatter可用于从媒体types为“text / plain”的内容读取“String”types的对象,
- ASP.NET MVC下的SSL页面
- 什么可能会导致“服务不可用503”错误?
- 如何使用IOC从存储库中删除工作单元function
- 从ASP.NET MVC控制器redirect到外部URI