“ ViewBag”名称在当前上下文 VisualStudio2015中不存在

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

screenshot of problem in visual studio 2015

I am using a demo project. You can find the project here: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

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

其他详情:

  • 我已经使用的解决方案的清洁和重建,但这改变不了什么。
  • When I create a completely new MVC project it does work
  • 我的朋友也有同样的问题,我们都使用 VS2015和 Windows10
  • I can still run the application and it does work.

先谢谢你。

123208 次浏览

Update the version numbers in the settings of the web.config file in the Views folder.

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

If you have updated the MVC version through nuget, should be:

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

其他依赖版本可能也需要更新。MVC 帮助器和对象视图中的编译和名称空间问题通常与 View 文件夹中混乱的 web.config文件有关。

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

解决方案是将你的项目升级到 MVC5。它完全解决了这个问题。 你可以从这个页面获得帮助。它清楚地解释了这一点。

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

VisualStudio 团队声明,他们将通过第一次更新向 VisualStudio2015添加 mvc4支持。

我解决了在 web.config 中替换的问题

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

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

在尝试了所有其他方法并感到有点沮丧之后,我升级了。NET 框架,我的 MVC5应用程序从4.5到4.5。不知怎么的,它解决了我的问题。希望能有帮助。

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

结果是某种 组件缓存中的错误文件,阻止 Razor 视图识别 ViewBag、 Model 和 HtmlHelpers。删除这些文件解决了问题(下次打开 VisualStudio 时创建了这些文件的良好版本)。

文件位于这里:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

删除所有四个文件:

  • Microsoft.VisualStudio. Default.cache
  • Microsoft.VisualStudio. Default.catalogs
  • Microsoft.VisualStudio. Default.err
  • Microsoft.VisualStudio.Default.external

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

在尝试了太阳底下的一切后,原来 什么的已经修改了我的 System.Web.WebPages.Razor <sectionGroup>/Views/Web.Config从适当的骆驼案 System.Web.WebPages.Razor到一个全小写的 system.web.webpages.razor,这最终是我的死亡。

希望这能帮助其他可怜人解决这个问题。

For reference, this is the correct entry (for my scenario)

<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">

在应用程序设置中查找“ webpages: Version”并将其更新到3.0.0.0版

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

我把它更新到

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

我在这上面浪费了一整天的时间。我在这篇(和其他)文章中尝试了所有的方法,但都无济于事。最终我发现我需要用一种不同的方式来开启这个项目。我刚刚升级了一个现有的网站到 VisualStudio2015,MVC5,。NET 框架4.5.2,而且我正在使用 Windows 10,但是我怀疑对于每个软件应用程序的其他版本来说,答案是一样的。

这是我选择打开一个网站的菜单选项:

enter image description here

取而代之的是,我使用这个菜单选项打开了定义项目的 csproj 文件:

enter image description here

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

enter image description here

然而,我甚至不需要这个-一切都工作!不管怎样,我还有下一个问题要解决。

把它关掉再打开对我来说很管用。 你可以试试重启视觉工作室。

我可以通过在我的. cshtml 页面的顶部添加以下内容来解决这个问题

@{ViewBag.Title = "Title";}

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

比赛已经很晚了,但是这些解决方案对我来说都不管用。

I upgraded to VS 2017, and the site worked, but Visual Studio compiler broke most of .cshtml files

极低密度辐射;

我的解决方案. sln 有错误的版本

sln diff

so you want to create a new solution with newer VS and compare it to yours and copy version info over.

全面升级步骤:

  1. 对于 VS,sln 文件有正确的版本
  2. 右键单击 VS > Nuget Manager > Update > run all update 中的 MySolution
  3. 右键单击 VS > Application > update Target Framework 中的 MySolution (在我的示例中为4.5.2)
  4. 修复. config 文件中的任何版本问题(即 RAZOR 到3.0.0.0)
  5. 修复编译器中的任何代码问题(对我来说 ForEach 是模棱两可的)

我已经添加了控制器

  • Step 1: Add > Class
  • 步骤2: 用户控制器
  • .
  • .
  • .

corresponding code created:

namespace SampleApp.Controllers
{
public class UserController {
}
}

My errors got changed by changing the Step 1 as:

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

创建相应的代码:

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

问题是: 我没有从 < strong > Controller 继承我的类

我错误中的其他信息包括——所有这些信息都来自这个问题:

Error CS0117: ‘ ModelState’不包含‘ IsValid’的定义

错误 CS0103: “ RedirectToAction”名称不存在于 current context

Error CS0103: “ View”名称在当前上下文中不存在

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

Error CS0103: 当前上下文中不存在名称“ Json”

希望这个改变可以帮助那些没有注意到他们最初步骤的人。

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

我面对这个问题更多次,最后我发现它发生了,因为文件夹的意见应该包含它是自己的网络配置

我的一个观点也遇到了类似的问题。在我的情况下,我只是 清除溶液和尝试 重建它和它的工程。

在尝试了这个主题(和其他主题)至少90% 的解决方案/技巧之后,我终于解决了它! !剧透警告,没有逻辑的痕迹是下面所谓的“解决方案”: 运行解决方案与所有标签关闭终于工作,当没有其他什么会让我“ ViewBag & Co 不存在在当前的上下文”... 你已经被警告,没有该死的逻辑!

希望有一天能帮到别人

以下连结可帮助你。

它会告诉你问题出在哪里

它解决了我的问题。不知怎么的,我从视图文件夹中删除了我的 web.config 文件。

在我的情况下,我有这个问题发生在我的电脑只有一个项目。我的项目在 VS2012中工作得很好,但是在 VS2017中打开的时候出现了这个问题。

我在这里的主要问题是缓存。我的项目是指向 Razor 和 MVC 的老版本的 dll 缓存版本,它没有找到在新版本中添加的特性,比如 ViewBag。ViewBag 是在 Razor 版本3中添加的,但是因为我缓存了 Razor 版本2,所以它找不到 ViewBag (但是它可以找到其他在版本2中出现的东西)。然而,像接受的答案那样简单地清除缓存并没有解决我的问题。我们必须修改配置文件,对 Razor 说“使用版本3而不是2”,对 MVC 说“使用版本5而不是4”,然后关闭 VS,删除缓存,打开项目并重新构建。然后事情就解决了。下面是更详细的说明。

以下是帮助我解决问题的一系列变化:

  1. 在“视图”文件夹的 Web.config 中更改所有位置
    • MVC 版本设置为4.0.0.0到5.0.0.0
    • Razor 版本设置为2.0.0.0到3.0.0.0

以下是我的例子中的几句台词:

<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>

(注意: 1)你的版本可能不同,我只是告诉什么需要做在我的情况下2)我省略了一些东西与“ ...”为了简洁3)即使你有 MVC 版本像5.3.2.0你仍然应该输入5.0.0.0,与剃刀的版本相同-输入所有的零在3.0.0.0)

  1. 在主配置文件(顶层的配置文件)中,将 webPages:version从2.0.0.0更改为3.0.0.0。

  2. 这个更改可能不会影响解决方案,但是我仍然要提到它。确保“视图”文件夹的 <namespaces>部分的内容与 main 完全相同。在项目根目录下的 conifg 文件,类似于:

<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
  1. 最后,关闭 VS 删除 %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache中的所有缓存文件(或者不管您的正确路径是什么) ,就像 Fenton 在(当前)接受的答案中建议的那样。也删除 .scan文件,即使它没有在该答案中提到。完成后,打开 VS,清理项目并重新构建它。事情 应该现在工作。这招对我很管用。

我也面临同样的问题,我尝试了清理、构建和重建解决方案,但是没有成功。

所以最后我做了如下的事情:

  1. Windows 键 + R
  2. 类型 % temp%
  3. 进来
  4. 删除 所有文件(如果只有少数文件未删除,没有问题)

希望对你们也有用。

After upgrading one of my client’s applications from ASP MVC 4 to ASP MVC 5, We had designers errors related to Html Helpers and ViewBag in cshtml pages.

To fix those issues make sure you do the following: Install Asp.NET Web Helpers Library from Nuget 打开项目的 Web.config 并更新绑定(如果在安装 Nuget 包时没有更新绑定) ,例如

<dependentAssembly>
<assemblyIdentity name=”System.Web.Mvc” publicKeyToken=”31bf3856ad364e35″ />
<bindingRedirect oldVersion=”0.0.0.0-5.2.2.0″ newVersion=”5.2.2.0” />
</dependentAssembly>

Find 「网页: 版本」 in the appsettings and update it to version 3.0.0.0. My web.config had

我把它更新到

重新启动 VisualStudio 并重新生成。您可能必须删除项目的 bin 文件夹

点击以下链接: Https://lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-does-not-exist-in-the-current-context/