ChatGPT解决这个技术问题 Extra ChatGPT

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

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

https://i.stack.imgur.com/K03nW.png

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

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

其他详情:

我已经在解决方案上使用了 clean & rebuild ,但这并没有改变。

当我创建一个全新的 MVC 项目时,它确实有效

我的朋友有同样的问题,我们都使用 VS 2015 和 Windows 10

我仍然可以运行该应用程序并且它确实有效。

提前致谢。

当它仍然运行时,它只是后台编译器中的一个错误。尝试删除 .suo 文件。
你在运行哪个项目?基本的 ?粗鲁,路由?
@Henk 不幸的是那没有用。
@Prashant我已经尝试过基本项目和路由项目。问题出现在他们俩身上。
你解决了吗?我有同样的问题@Michjuh

j
jpmc26

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

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

这些文件位于此处:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

删除所有四个文件:

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 文件
这也是我的解决方案。感谢您的发布!
这解决了我将 .net 4 升级到 4.5.2 并将 mvc 3 升级到 5 引起的问题
我的文件夹是 15.0_7e8de76c\ComponentModelCache for VS 2017。
该解决方案也非常适合 VS 2019,不要忘记关闭 VS,然后再打开,以便缓存建立在正确的版本控制之上。此外,views/web.config 和 main web.config 中的 MVC 版本应该相同。 System.Web.WebPages.Razor 的规则相同。
B
Benjamin Anderson

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


这对我有用,尽管我必须输入 5.2.0.0 而不是 5.2.2.0 的版本号。您可以通过转到 References > System.Web.MVC 并选择 Properties 来查看您拥有的版本。谢谢您的帮助
@user2233949,@Benjamin 我正在使用 MVC 版本 4.0.0.0,我可以从属性中看到它。在我的情况下应该解决什么问题?
检查所有 web.config 文件并确保它们都使用正确的主机版本。有时,当您在概览文件夹中覆盖了设置时,问题可能会在没有得到纠正的情况下溜走。
我尝试了所有其他建议,但这个建议使用 5.2.3.0 对我有用。谢谢本杰明
这对我来说是正确的答案。此外,在更改 web.config 后,不要忘记关闭所有 *.cshtml*.vbhtml 文件并清理并重建解决方案。 VS 2019 16.1.2
J
Jordan Rieger

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


D
Damian Green

在 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″ />

我删除了这两行(webpages.Version、webpages.Enabled)并且在 MVC 5.2 中似乎工作正常
这应该在两个版本的 Web.config、项目根目录和任何区域的 Web.configs 中进行更新。
谢谢你。就我而言,有问题的标签位于 - - 我需要更改
使用版本 =3.0.0.0
删除任何地方的缓存(包括 Temporary ASP.NET Files)没有帮助,但这个答案确实
这个设置甚至意味着什么?它对应什么?你如何确定你的应用程序依赖哪个版本?
j
jbwebtech

在尝试了所有方法之后,结果发现 某事 已将我在 /Views/Web.Config 中的 System.Web.WebPages.Razor <sectionGroup> 从正确的 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"> 

我的都是小写但没有解决我的问题。
圣鲤。这也是我的宿命。我不敢相信你发现了这个,@jbwedtech。
我也有这些小写的,改变大小写并没有解决问题。
h
hosam hemaily

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


但是那个 web.config 应该是什么?不应该是自动生成的吗? (更新) 找到它应该有的内容以及它是如何生成的stackoverflow.com/questions/29305914/…
是的,你是对的,在我的项目中,Web.Config 之前并不存在(是的,它应该自动生成,但是从以前的开发人员那里获取了一个项目,不知道他为什么删除它)。为 Views 文件夹添加 Web.Config 文件后,它起作用了。
B
Burk

有时在 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 团队宣布他们将在第一次更新时将 mvc4 支持添加到 Visual Studio 2015。


w
wha7ever

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

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

以下是帮助我解决问题的一系列更改:

在“视图”文件夹的 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,与 Razor 的版本相同 - 在 3.0.0.0 中输入全零)

在主配置文件(顶层)中,将 webPages:version 从 2.0.0.0 更改为 3.0.0.0。此更改可能不会影响解决方案,但我仍然会提到它。确保“Views”文件夹的 部分与项目根目录下的主 .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>

最后,关闭VS。删除 %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache (或任何您的正确路径)中的所有缓存文件,就像芬顿(当前)接受的答案中所建议的那样。还要删除 .scan 文件,即使该答案中没有提到它。完成后,打开 VS,清理您的项目并重建它。事情现在应该工作了。它对我有用。


谢谢你。在升级到 MVC 5 后,这对我的 MVC 4 应用程序有用。无论出于何种原因,这些文件都没有使用新版本号进行编辑。这应该是最佳答案。
S
Sonic Soul

游戏迟到了,但这些解决方案都不适合我。

我升级到 VS 2017,并且站点工作正常,但 Visual Studio 编译器破坏了大部分 .cshtml 文件

TLDR;

mysolution.sln 有错误的版本

https://i.stack.imgur.com/F8oF8.png

所以你想用更新的 VS 创建一个新的解决方案,并将它与你的比较并复制版本信息。

完整升级步骤:

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


我的项目是在 VS2013 中开始的,当我点击 VS2017 时,我开始看到这些错误,但一切编译正常,所以我试图弄清楚发生了什么,但并不太难。由于打开视图会产生大量错误,因此这已成为一个问题。我现在在 VS2019 上,偶然发现了你的修复;你摇滚!我的 .sln 有 14.0.25123.0,应该是 16.3.9。我还修复了框架的任何版本问题。我不必更新 nuget 包(谢天谢地),因为我没有时间完全测试所有更新。
A
Andy Brown

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

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

https://i.stack.imgur.com/veCnj.jpg

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

https://i.stack.imgur.com/tyyt4.jpg

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

https://i.stack.imgur.com/9goT1.jpg

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


G
Ganesh Kamath - 'Code Frenzy'

我已经添加了控制器

第 1 步:添加 > 类

第 2 步:用户控制器

.

.

.

创建的相应代码:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

通过将第 1 步更改为:

第 1 步:添加 > 控制器

第 2 步:用户控制器

.

.

.

创建的相应代码:

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

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

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

错误 CS0117:“ModelState”不包含“IsValid”的定义错误 CS0103:当前上下文中不存在名称“RedirectToAction”错误 CS0103:当前上下文中不存在名称“View”错误 CS0103:名称当前上下文中不存在“ViewBag”错误 CS0103:当前上下文中不存在名称“Json”

希望此更改可以帮助那些在初始步骤中没有注意的人。


J
Jueverhard

在尝试了该主题(和其他)的每个解决方案/技巧的至少 90% 之后,我终于解决了它!剧透警报,没有任何逻辑痕迹是以下所谓的“解决方案”:在所有选项卡关闭的情况下运行解决方案终于奏效了,当没有其他任何东西可以让我幸免于“当前上下文中不存在 ViewBag&Co”时...你已经被警告过,没有什么可怕的逻辑!

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


k
kravits88

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


听起来像是一个笑话的答案,但这对我来说是固定的。耸耸肩
C
Colin

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

@{ViewBag.Title = "Title";}

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


S
SATYA PRAKASH NANDY

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


L
Love Pandey

以下链接可以帮助您。

It will show you what could be the problem

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


S
Sadiq

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

所以最后我做了如下:

按 Windows 键 + R 键入 %temp% 回车 删除所有文件(如果少数文件未删除,没有问题)

希望它也适用于你们。


r
raniel garcia

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

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


u
user3520884

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


F
Fabio Manneschi

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

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

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

只是为了补充为什么这被否决 - 我相信它允许从浏览器中看到实际视图