繁体   English   中英

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

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

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

Visual Studio 2015 中问题的屏幕截图

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

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

其他详情:

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

提前致谢。

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

原来是组件缓存中有一些坏文件,导致 Razor 视图无法识别 ViewBag、Model 和 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文件有关。

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

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

在阳光下乱投医后,原来的东西已经修改了我的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"> 

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

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

就我而言,我仅在我的 PC 上为一个项目发生了此问题。 我的项目在 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)即使你有像 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\\14.0\\ComponentModelCache (或任何您的正确路径)中的所有缓存文件,就像 Fenton(当前)接受的答案中建议的那样。 还要删除.scan文件,即使该答案中没有提到它。 完成后,打开 VS,清理项目并重建它。 现在应该可以正常工作了。 它对我有用。

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

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

TLDR;

mysolution.sln 版本错误

差异

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

完整升级步骤:

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

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

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

我添加了控制器

  • 第 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:当前上下文中不存在名称“视图”

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

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

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

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

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

关闭并再次打开它对我有用。 您可以尝试重新启动visual studio。

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

@{ViewBag.Title = "Title";}

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

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

以下链接可以帮助您。

它会告诉你可能是什么问题

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

我遇到了同样的问题。 我尝试了 Clean、Build 和 Rebuild 解决方案,但对我不起作用。

所以最后我做了如下:

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

希望它也适用于你们。

在将我的客户端应用程序之一从 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" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM