You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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ň

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:28:16