Visual Studio 2022中ViewBag不存在于当前上下文问题求助
解决CS0103: "ViewBag"不存在于当前上下文的问题
1. 检查根目录web.config的程序集与版本配置
确保根web.config中正确引用匹配版本的MVC、Razor相关程序集,且绑定重定向无冲突:
<compilation debug="true" targetFramework="4.7.2"> <!-- 需与项目目标框架一致 --> <assemblies> <add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> </compilation> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31BF3856AD364E35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" /> </dependentAssembly> </assemblyBinding> </runtime>
2. 检查Views文件夹下的web.config配置
视图编译依赖此文件的正确配置,重点确认以下节点:
- 确保
<pages>节点包含MVC核心命名空间:
<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" /> </namespaces> </pages>
- 确认
<system.web.webPages.razor>的宿主工厂与版本匹配:
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.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" /> </namespaces> </pages> </system.web.webPages.razor>
- 保证
<compilation>节点的targetFramework与根web.config一致。
3. 修正视图文件的页面指令
在出错的视图顶部显式声明继承基类,强制绑定MVC的WebViewPage:
@inherits System.Web.Mvc.WebViewPage <!-- 带模型的视图需改为:@inherits System.Web.Mvc.WebViewPage<YourModelType> -->
4. 其他排查操作
- 手动删除项目下的
bin和obj文件夹,重新生成项目,清除残留旧程序集。 - 检查NuGet包管理器,确保
System.Web.Mvc、System.Web.Razor、System.Web.WebPages版本统一(Razor 3.0对应MVC 5.x、WebPages 3.0),无跨版本混合引用。 - 确认项目属性的目标.NET Framework版本,与两个web.config中的
targetFramework完全一致。
内容的提问来源于stack exchange,提问作者Yohanes AI
相关产品推荐
相关产品推荐

