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

Mic*_*juh 86 c# asp.net-mvc web-config visual-studio razor

我开始在ASP.NET中再次开发,我在Visual Studio中遇到了一个小错误.使用一些剃刀功能时,我的.cshtml文件显示错误.例如,"当前上下文中不存在名称'ViewBag'".这是一张图片:

visual studio 2015中的问题截图

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

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

其他详情:

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

提前致谢.

Fen*_*ton 106

尽管拥有所有正确的配置,但我遇到了这个问题.

事实证明,组件缓存中存在一些不良文件,导致Razor视图无法识别ViewBag,Model和HtmlHelpers.删除这些文件解决了这个问题(下次打开Visual Studio时创建了这些文件的好版本).

这些文件位于:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Run Code Online (Sandbox Code Playgroud)

删除所有四个文件:

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

我后来在其他几台开发者机器上看到了同样的问题,这个解决方案很快就解决了.

  • 太棒了,这为我解决了这个问题.我还发现删除临时ASP.NET文件也有帮助.C:\ Users\your.name.here\AppData\Local\Temp\Temporary ASP.NET Files (8认同)
  • 升级到vs1017,到目前为止没有任何工作:/ (4认同)
  • 对于VS 2017,我的文件夹是15.0_7e8de76c\ComponentModelCache. (3认同)
  • 该解决方案也非常适合 VS 2019,不要忘记关闭 VS 然后稍后打开,以便缓存建立在正确的版本控制上。另外,views/web.config 和主 web.config 中的 MVC 版本应该相同。System.Web.WebPages.Razor 的规则相同。 (3认同)
  • 在本例中,看起来或多或少使用了相同的模板 (XX.0_XXXXXXXXX\ComponentModelCache)16.0_277b98eb\ComponentModelCache。清除了文件夹。重新启动VS。问题解决了。 (2认同)

Ben*_*son 38

更新web.configViews文件夹中文件设置中的版本号.

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

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

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

其他依赖版本也可能需要更新.View for MVC帮助程序和对象中的编译和命名空间问题通常与web.configView文件夹中的混乱文件有关.

  • 这对我有用,虽然我必须输入版本号5.2.0.0而不是5.2.2.0.您可以转到References> System.Web.MVC并选择Properties来查看您的版本.谢谢您的帮助 (8认同)
  • 它也适用于我,此时它是5.2.3.0 (3认同)
  • 这对我来说是正确的答案。同样在更改 web.config 后,不要忘记关闭所有 `*.cshtml` 和 `*.vbhtml` 文件并清理并重建解决方案。VS 2019 16.1.2 (2认同)

Dam*_*een 18

在appsettings中找到"webpages:Version"并将其更新到3.0.0.0版.我的web.config了

<add key="webpages:Version" value="2.0.0.0" />
Run Code Online (Sandbox Code Playgroud)

我把它更新到了

<add key=”webpages:Version” value=”3.0.0.0? />
Run Code Online (Sandbox Code Playgroud)

  • 这个设置*意味着什么*?它对应什么?如何确定您的应用程序依赖哪个版本? (3认同)

InG*_*eek 14

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


jbw*_*ech 11

在阳光下乱投医后,原来的东西已经修改了我System.Web.WebPages.Razor <sectionGroup>/Views/Web.Config从正确的驼峰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"> 
Run Code Online (Sandbox Code Playgroud)

  • 我的都是小写,但没有解决我的问题. (3认同)

Bur*_*urk 5

有时在 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 支持。


hos*_*ily 5

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

  • 但是该web.config应该是什么?它不应该自动生成吗?_(更新)_找到了它应该拥有的以及如何生成的/sf/ask/2051414011/ (2认同)

wha*_*ver 5

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

对我来说,这里的主要问题是缓存。我的项目指向 Razor 和 MVC 的较旧缓存版本的 dll,但没有找到新版本中添加的功能,例如 ViewBag。ViewBag 是在 Razor 版本 3 中添加的,但因为我缓存了 Razor 版本 2,所以它找不到 ViewBag(但它可以找到版本 2 中存在的其他内容)。但是,像接受的答案一样简单地清除缓存并不能解决我的问题。我们必须更改配置文件,为 Razor 指定“使用版本 3 而不是 2”,为 MVC 指定“使用版本 5 而不是 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>
Run Code Online (Sandbox Code Playgroud)

(注:1)您的版本可能不同,我只是告诉我的情况需要做什么 2)为了简洁起见,我省略了一些带有“...”的内容 3)即使您的 MVC 版本类似于 5.3.2.0您仍然应该输入 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>
Run Code Online (Sandbox Code Playgroud)
  1. 最后关闭VS。删除所有缓存文件%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache(或任何正确的路径),就像芬顿(当前)接受的答案中所建议的那样。也删除.scan文件,即使该答案中没有提及。完成后,打开 VS,清理项目并重建它。现在应该可以正常工作了这对我有用。


归档时间:

查看次数:

81961 次

最近记录:

6 年,5 月 前