当前上下文中不存在名称 'ViewBag' - Visual Studio 2015

The name 'ViewBag' does not exist in the current context - Visual Studio 2015

我又开始在 ASP.NET 发展,我 运行 在 Visual Studio 中犯了一个小错误。我的 .cshtml 文件在使用一些 razor 函数时显示错误。例如 "The name 'ViewBag' does not exist in the current context"。这是一张照片:

我正在使用演示项目。您可以在此处找到该项目:https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

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

其他详情:

提前致谢。

更新 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 文件有关。

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

解决方案是将您的项目升级到 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 支持。

我在 web.config

中解决了替换问题
 <add key="webpages:Enabled" value="false" />

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

在尝试了所有其他方法并感到有点沮丧之后,我将我的 MVC5 应用程序上的 .NET 框架从 4.5 升级到 4.5.2。它以某种方式解决了我的问题。希望对你有帮助。

尽管所有配置都正确,但我还是遇到了这个问题。

原来是一些bad files in the Component Cache, preventing the Razor views from recognising ViewBag, Model, and HtmlHelpers。删除这些文件解决了问题(这些文件的良好版本是在我下次打开时创建的 Visual Studio)。

文件位于此处:

%LOCALAPPDATA%\Microsoft\VisualStudio.0\ComponentModelCache

删除所有四个文件:

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

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

在阳光下尝试了一切之后,结果 某些东西 修改了我 System.Web.WebPages.Razor <sectionGroup> in /Views/Web.Config 中的 /Views/Web.Config 从正确的 CamelCase System.Web.WebPages.Razor 到全小写的 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"> 

在appsettings中找到"webpages:Version",更新到3.0.0.0版本。我的web.config有

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

我更新为

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

我在这上面浪费了一个工作日。我尝试了这个(和其他)帖子中的所有内容,但无济于事。最终我发现我需要以不同的方式打开项目。我刚刚将现有网站升级到 Visual Studio 2015、MVC5、.NET Framework 4.5.2 并使用 Windows 10,但怀疑每个软件应用程序的其他版本的答案都是一样的.

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

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

然后我有了 "clean solution" 许多其他人提到的选项:

但是,我什至不需要这个 - 一切正常!好吧,我继续下一组问题,无论如何......

将其关闭再打开对我有用。 您可以尝试重新启动 visual studio.

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

@{ViewBag.Title = "Title";}

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

晚了,但 none 这些解决方案对我有用。

我升级到 VS 2017,网站可以正常运行,但是 Visual Studio 编译器破坏了大部分 .cshtml 文件

TLDR;

mysolution.sln 版本错误

所以您想使用较新的 VS 创建一个新的解决方案并将其与您的解决方案进行比较并复制版本信息。

完整升级步骤:

  1. 确保 .sln 文件具有正确的 VS 版本
  2. 在 VS 中右键单击 MySolution > Nuget 管理器 > 更新 > 运行 所有更新
  3. 在 VS 中右键单击 MySolution > 应用程序 > 更新目标框架(在我的例子中是 4.5.2)
  4. 修复 .config 文件中的任何版本问题(即 RAZOR 到 3.0.0.0)
  5. 修复编译器中的任何代码问题(对我来说 ForEach 是模棱两可的)

我通过

添加了控制器
  • 第 1 步:添加 > Class
  • 第 2 步:用户控制器
  • .
  • .
  • .

创建对应代码:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

通过将步骤 1 更改为:

我的错误得到了更改
  • 第 1 步:添加 > 控制器
  • 第 2 步:用户控制器
  • .
  • .
  • .

创建对应代码:

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

问题是: 我没有从 Controller

继承我的 class

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

error CS0117: 'ModelState' does not contain a definition for 'IsValid'

error CS0103: The name 'RedirectToAction' does not exist in the current context

error CS0103: The name 'View' does not exist in the current context

error CS0103: The name 'ViewBag' does not exist in the current context

error CS0103: The name 'Json' does not exist in the current context

希望这个改动能帮助到那些在起步阶段没有注意的人。

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

我多次遇到这个问题,最后我发现它发生了,因为视图文件夹应该包含它是自己的网络配置

我的一种观点遇到了类似的问题。就我而言,我只是 清理了解决方案 并尝试 重建它 及其作品。

在尝试了至少 90% 的每个 solution/trick 这个主题(和其他)之后,我终于解决了它!!剧透警报,没有一丝逻辑是以下所谓的 "solution": 运行 关闭所有选项卡的解决方案终于奏效了,当时没有别的办法可以让我 "ViewBag&Co does not exist in the current context".. . 你已经被警告过,没有什么奇怪的逻辑!

希望有一天能对某人有所帮助^^

以下link可以帮到你。

It will show you what could be the problem

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

就我而言,这个问题只在我的 PC 上发生过一个项目。我的项目在 VS2012 中运行良好,但在 VS2017 中打开时出现此问题。

这里对我来说主要的问题是缓存。我的项目指向 Razor 和 MVC 的旧缓存版本的 dll,它没有找到在新版本中添加的功能,例如 ViewBag。 ViewBag 是在 Razor 版本 3 中添加的,但是因为我缓存了 Razor 版本 2,它找不到 ViewBag(但它可以找到版本 2 中存在的其他内容)。但是,像接受的答案中那样简单地清除缓存并不能解决我的问题。我们不得不更改配置文件,对 Razor 说 "use version 3 instead of 2",对 MVC 说 "use version 5 instead of 4",然后关闭 VS,删除缓存,打开项目并重建。然后事情就解决了。下面是更详细的说明。

以下是帮助我解决问题的更改顺序:

  1. 在 "Views" 文件夹的 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)甚至如果你有类似 5.3.2.0 的 MVC 版本,你仍然应该输入 5.0.0.0,与 Razor 的版本相同 - 在 3.0.0.0 中输入全零)

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

  2. 此更改可能不会影响解决方案,但我仍会提及它。确保 "Views" 文件夹的 <namespaces> 部分与项目根目录中的主要 .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.0\ComponentModelCache 中的所有缓存文件(或任何您的正确路径),就像 Fenton 在(当前)接受的答案中所建议的那样。还要删除 .scan 文件,即使该答案中未提及也是如此。完成后,打开 VS,清理项目并重建它。现在 应该 可以正常工作了。它对我有用。

我遇到了同样的问题。我尝试了清理、构建和重建解决方案,但对我不起作用。

所以最后我做了如下:

  1. Windows键+R
  2. 键入 %temp%
  3. 点击输入
  4. 删除所有文件(如果未删除的文件很少,没有问题)

希望它也对你们有用。

将我的一个客户的应用程序从 ASP MVC 4 升级到 ASP MVC 5 后,我们在 cshtml 页面中遇到了与 Html Helpers 和 ViewBag 相关的设计错误。

要解决这些问题,请确保执行以下操作: 从 Nuget 安装 Asp.NET Web Helpers 库 打开项目的 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>

在appsettings中找到“webpages:Version”,更新到3.0.0.0版本。我的 web.config 有

我更新为

重新启动 Visual Studio 并重建。您可能必须删除项目的 bin 文件夹

访问这个: https://lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-does-not-exist-in-the-current-context/