视图中MVC类不可用(标红),升级VS仍无效,求排查解决
解决MVC类在视图中显示为红色不可用的问题
嘿,我之前维护老MVC项目时也碰到过一模一样的问题,给你几个实用的排查步骤,应该能解决:
检查NuGet包与程序集引用
右键项目 → 「管理NuGet程序包」,确认Microsoft.AspNet.Mvc和Microsoft.AspNet.Razor这两个核心包都已安装,且版本是你提到的5.2.3.0。如果有缺失、版本不一致,直接重新安装对应版本。另外也要检查项目引用里的System.Web.Mvc是否存在,版本是否匹配。核对Web.config配置(根目录+Views目录)
这两个配置文件很容易出问题,一定要仔细检查:- 根目录Web.config:找到
configuration/system.web/compilation/assemblies节点,确认包含正确的MVC程序集引用:<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> - Views目录下的Web.config:
- 检查
pages/namespaces节点,确保添加了MVC相关命名空间:<add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> - 确认
configuration/system.web.webPages.razor/host节点的type属性版本正确:<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- 检查
- 根目录Web.config:找到
清理缓存并重建项目
有时候VS的缓存会搞出奇怪的问题,按这个流程来:- 点击菜单「生成」→「清理解决方案」
- 手动删除项目下的
bin和obj文件夹 - 重启Visual Studio
- 重新生成解决方案
检查视图的页面指令
打开报错的视图,看顶部的@inherits指令是否正确:@inherits System.Web.Mvc.WebViewPage如果是强类型视图,还要确认模型的命名空间有没有正确引用,别漏了
@using指令。验证.NET Framework版本匹配
右键项目→「属性」→「应用程序」,确认目标框架是.NET Framework 4.6,MVC5.2.3完全支持这个版本,别不小心选成了其他框架。
如果以上步骤都试过还没解决,可以新建一个空白的MVC5项目,对比它的引用和配置文件,看看你的项目有没有缺失的节点或者错误的配置——有时候老项目的.csproj文件损坏也会导致这类问题。
内容的提问来源于stack exchange,提问作者Morgs




