我再次开始在 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
我仍然可以运行该应用程序并且它确实有效。
提前致谢。
尽管配置正确,我还是遇到了这个问题。
原来是一些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
我随后在其他几台开发人员机器上看到了同样的问题,这个修复很快解决了这个问题。
更新 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
文件有关。
4.0.0.0
,我可以从属性中看到它。在我的情况下应该解决什么问题?
*.cshtml
和 *.vbhtml
文件并清理并重建解决方案。 VS 2019 16.1.2
我不小心从 Views
文件夹中删除了 web.config
,认为这是不必要的。当我把它放回去时,它开始工作了。
在 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″ />
Temporary ASP.NET Files
)没有帮助,但这个答案确实。
在尝试了所有方法之后,结果发现 某事 已将我在 /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">
我多次遇到这个问题,最后我发现它发生了,因为视图文件夹应该包含它是自己的网络配置
有时在 web.config 的设置中更改版本号是不够的。出现此问题是因为 Visual Studio 2015 没有 mvc4 工具。
解决方案是将您的项目升级到 MVC 5。它完全解决了问题。您可以从此页面获得帮助。它清楚地解释了它。
顺便说一句,Visual Studio 团队宣布他们将在第一次更新时将 mvc4 支持添加到 Visual Studio 2015。
就我而言,我仅在一个项目的 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”文件夹的
<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,清理您的项目并重建它。事情现在应该工作了。它对我有用。
游戏迟到了,但这些解决方案都不适合我。
我升级到 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 是模棱两可的)
我在这件事上浪费了一个工作日。我尝试了此(和其他)帖子中的所有内容,但无济于事。最终我发现我需要以不同的方式打开项目。我刚刚将现有网站升级到 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
但是,我什至不需要这个 - 一切正常!好吧,无论如何,我开始处理下一组问题......
我已经添加了控制器
第 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”
希望此更改可以帮助那些在初始步骤中没有注意的人。
在尝试了该主题(和其他)的每个解决方案/技巧的至少 90% 之后,我终于解决了它!剧透警报,没有任何逻辑痕迹是以下所谓的“解决方案”:在所有选项卡关闭的情况下运行解决方案终于奏效了,当没有其他任何东西可以让我幸免于“当前上下文中不存在 ViewBag&Co”时...你已经被警告过,没有什么可怕的逻辑!
希望有一天它会对某人有所帮助^^
将其关闭再打开对我有用。您可以尝试重新启动 Visual Studio。
我能够通过将以下内容添加到我的 .cshtml 页面顶部来解决此问题
@{ViewBag.Title = "Title";}
重新编译后,我能够删除这一行并且错误消失了。
我的一种观点遇到了类似的问题。就我而言,我刚刚清理了解决方案并尝试重建它及其工作。
我遇到了同样的问题。我尝试了清理、构建和重建解决方案,但对我不起作用。
所以最后我做了如下:
按 Windows 键 + R 键入 %temp% 回车 删除所有文件(如果少数文件未删除,没有问题)
希望它也适用于你们。
在将我的客户的一个应用程序从 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/
在尝试了所有其他方法并感到有点沮丧之后,我将 MVC5 应用程序上的 .NET 框架从 4.5 升级到了 4.5.2。不知何故,它解决了我的问题。希望能帮助到你。
我解决了在 web.config 中的替换
<add key="webpages:Enabled" value="false" />
和
<add key="webpages:Enabled" value="true" />