.NET 4的ASP.NET MVC项目卸载VS2017后视图找不到ViewBag与model
解决卸载VS2017后ASP.NET MVC项目编译报错(ViewBag/model不存在)的问题
咱们先捋清楚问题的核心:你的项目是基于.NET 4和ASP.NET MVC4的,但根Web.config里却配置了MVC3的Razor主机工厂。卸载VS2017后,全局的MVC3编译支持被移除,直接导致编译时找不到对应的上下文对象;但运行时服务器加载的是bin目录里的MVC4 DLL,所以网页能正常显示——这是编译依赖和运行依赖不一致造成的矛盾。
下面是具体的解决步骤:
1. 修正根目录Web.config的MVC版本配置
找到项目根目录Web.config里的这一行:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
把版本号从3.0.0.0改成4.0.0.0,修改后如下:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
同时检查Web.config里的<assemblies>节点,确保System.Web.Mvc的引用版本匹配:
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
2. 确认项目的NuGet包和本地引用
- 右键项目 → 管理NuGet程序包,检查是否安装了
Microsoft.AspNet.Mvc包,版本应为4.x系列 - 如果未安装,直接搜索并安装对应MVC4版本;如果已安装,尝试卸载后重新安装,确保引用路径无异常
- 找到项目引用里的
System.Web.Mvc,右键打开属性,把复制本地设置为True,这样编译时会将DLL复制到bin目录,不再依赖VS的全局安装文件
3. 清理缓存并重建项目
- 点击菜单 → 生成 → 清理解决方案
- 手动删除项目目录下的
bin和obj文件夹,彻底清除旧编译缓存 - 重新生成解决方案,避免残留的MVC3相关文件干扰编译流程
4. 修正Views目录下的Web.config配置
打开项目Views文件夹内的Web.config,检查两处关键配置:
<system.web.webPages.razor>下的<host>节点,同样把factoryType的版本改成4.0.0.0- 检查
<pages>→<namespaces>里的System.Web.Mvc、System.Web.Mvc.Ajax等命名空间,确保没有引用错误版本
关于无法安装ASP.NET MVC3的说明
其实你的项目完全不需要MVC3!之前的编译错误就是因为配置硬指定了MVC3的主机工厂,导致编译时找不到对应类型,所以不用纠结安装MVC3的问题,把配置统一修正为MVC4即可解决。
内容的提问来源于stack exchange,提问作者Jan Sršeň
相关产品推荐
相关产品推荐

