gpt4 book ai didi

c# - @ViewBag 在当前上下文中不存在

转载 作者:行者123 更新时间:2023-11-30 17:28:31 26 4
gpt4 key购买 nike

我知道网上已经有一些解决方案,但在尝试了所有解决方案后,我对自己感到困惑。

我只想澄清我尝试过的解决方案:

  1. 确保 Microsoft.AspNet.Web.OptimizationSystem.Web.Optimization 存在。我在 References 文件夹中有 System.Web.Optimization。我尝试在 Nuget 中安装 Microsoft.AspNet.Web.Optimization,控制台告诉我它已经存在。我认为这意味着我已经在引用资料中找到了它。
  2. 将命名空间添加到 ~/Views/Web.config(不是根 Web.config)。在我的 ~/Views/Web.config 我有:

    <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,
    System.Web.Mvc, Version=3.0.0.0, Culture=neutral,
    PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <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>
    </pages>
    </system.web.webPages.razor>

    在我的根 Web.config 中:

    <system.web>
    <machineKey configSource="Config\MachineKey.config"/>
    <httpRuntime targetFramework="4.5" maxRequestLength="20480"/>
    <globalization culture="en-CA" uiCulture="en-CA"/>
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.5">
    <assemblies>
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089"/>
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=31BF3856AD364E35"/>
    </assemblies>
    </compilation>
    <pages buffer="true" enableViewState="false">
    <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>
    </pages>
    </system.web>

    我在网上搜索,其中一个答案告诉我 namespace 应该相同。我做了,但对我没有任何改变。

  3. 确定目标版本。我的目标框架是 4.5。我的 MVC 版本是 5.2.0.0。其实我不明白这个解决方案。我尝试将框架版本更改为 4.5.1,Visual Studio 告诉我我的版本实际上是 4.5。我猜我的目标版本是可以的....(其实我不明白这个解决方案)

  4. @using System.Web.Optimization 添加到 ~/Views/Shared/_Layout.cshtml。这让事情发生了。我的 @Scripts.Render 现在可以了,但是 @ViewBag 下面仍然有一条红线。

  5. 删除 ComponentModelCache 并重新启动 Visual Studio。我正在使用 VS 2015。我试过了,没有任何反应。

我稍后会更精确地执行这些解决方案,但我只是想知道是否还有其他我错过并值得尝试的解决方案。非常感谢您的帮助!!

最佳答案

经过几个小时的挖掘。我解决了我的问题。我的解决方案 1 只能删除红线,当我运行 Localhost 调试时它给了我 500 错误。

解决方案 1: 我只是在 ~/Views/Web.config 的以下代码中将版本从 3.0.0.0 更改为 2.0.0.0:

  <configSections>
<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">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
</sectionGroup>

当我将所有版本更改为 2.0.0.0 时,红线消失但出现 500 错误。这意味着 system.web.webPages.razor 正确加载到 _Layout.cshtml

据我了解,如果 system.web.webPages.razor 版本不正确,我对 ~/Views/Web.config 的以下设置不会加载:

  <system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.Optimization" />
</namespaces>
</pages>
</system.web.webPages.razor>

解决方案 2: 然后,我检查了根 Web.config 中的以下部分代码:

 <connectionStrings configSource="Config\ConnectionStrings-dev.config" />
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

webpages:version 是 2.0.0.0。我将其更改为 3.0.0.0 以匹配 ~/Views/Web.config 中的版本,重新启动 visual studio,它没有任何问题。

link是那个帮助了我。

关于c# - @ViewBag 在当前上下文中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52748122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com