C# @当前上下文中不存在ViewBag
我知道网上已经有一些解决方案了,但在尝试了所有的解决方案后,我自己感到困惑 我只想澄清我尝试过的解决方案:C# @当前上下文中不存在ViewBag,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我知道网上已经有一些解决方案了,但在尝试了所有的解决方案后,我自己感到困惑 我只想澄清我尝试过的解决方案: 确保Microsoft.AspNet.Web.Optimization或System.Web.Optimization存在。我在参考文件夹中有System.Web.Optimization。我试图在Nuget中安装Microsoft.AspNet.Web.Optimization,控制台告诉我它已经存在。我想这意味着我已经有了它的参考资料 将命名空间添加到~/Views/Web.confi
Microsoft.AspNet.Web.Optimization
或System.Web.Optimization
存在。我在参考文件夹中有System.Web.Optimization
。我试图在Nuget中安装Microsoft.AspNet.Web.Optimization
,控制台告诉我它已经存在。我想这意味着我已经有了它的参考资料李>
~/Views/Web.config
(不是rootWeb.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>
我在网上搜索,其中一个答案告诉我名称空间应该是相同的。我做了,但没有任何改变@添加到~/Views/Shared/_Layout.cshtml
。这让事情发生了。我的@Scripts.Render
现在可以了,但是@ViewBag
下面还有一条红线
稍后我将更精确地执行这些解决方案,但我只想知道是否还有其他我错过的解决方案值得尝试。非常感谢你的帮助 挖了几个小时后。我解决了我的问题。我的解决方案1只能删除红线,当我运行Localhost调试时,它给了我500个错误 解决方案1:我只是在下面的
~/Views/Web.config
代码中将版本从3.0.0.0更改为2.0.0.0:
<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>
<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>
<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>
解决方案2:然后,我检查了rootWeb.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>
<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>
<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>
是那个帮助我的人 注意在项目文件中加载了razor程序集,对我来说是版本2:
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
真的
..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll
在/Views/Web.config中指出了另一个版本,版本3:
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
当VS cshtml编辑器试图加载版本3时,加载失败。所有razor引用都显示为未知(ViewBag、@Html等)
最后,当我链接同一个版本时,在cshtml编辑器中运行良好;) 在我做错了一些事情之后,我在MVC5中看到了这一点:我通过模板使用scaffold构建了razor网页UserControl,而不是为MVC5构建默认视图/控制器集。结果一事无成。。但是Views/main目录中额外的2个文件对我没有吸引力。。所以下一步,我删除了两个与网页相关的文件,它们是:Views/Web.config和Views/mycontrol.ascx
之后,我重建了我的解决方案,尝试在VS中调试。。遇到了上述问题。在主页上找不到ViewBag.cshtml
我在这里解决了这个问题,恢复了以前生成的Views/Web.config,再次执行网页脚手架。然后,我只删除了/Views中的.ascx web控件,留下了web.config。。保存、关闭和打开VS,重建程序。跑没有问题
我使用Visual Studio 16.5.4,以及.NET Framework 4.8和MVC 5.2.7.0它是在部署您的网站后出现的,还是只是编译器说viewbag不存在?@johnepraimtugado感谢您的回复。我刚从我们的TFS源服务器下载,还没有部署。生成后,在错误列表面板上显示这些错误。但是,构建将会成功。