Mvc View问题:编译正常但cshtml中C#代码报The name ***不存在于当前上下文
这种情况我碰到过好多次了——编译能正常通过但IDE(比如Visual Studio)里的Razor代码报红,提示「The name *** does not exist in the current context」,大多是IntelliSense缓存或IDE配置问题,而非代码本身错误。给你列几个亲测有效的解决步骤,按顺序尝试即可:
清理并重建项目
先执行「生成」→「清理解决方案」,接着「生成解决方案」,最后重启Visual Studio。很多时候是IntelliSense没同步编译后的项目状态,清理重建能强制刷新它的认知。强制刷新/重置IntelliSense缓存
用快捷键Ctrl+Shift+R可以直接刷新当前视图的IntelliSense;如果无效,找到项目根目录下的隐藏文件夹.vs(注意要显示隐藏文件),删除它后重启VS——这个文件夹存着VS的本地缓存,删除后会自动重建,能解决大部分缓存紊乱问题。再次核对视图的命名空间与引用
虽然你确认过引用,但再检查一遍:视图顶部有没有添加对应的@using指令?比如你使用的模型在YourApp.Models命名空间下,有没有写@using YourApp.Models?另外页面模型的声明@model YourPageModel有没有拼写错误?有时候类名大小写或者命名空间漏写会导致IDE识别不到,但编译时因为项目引用正确能通过。检查Razor视图编译配置
右键项目→「属性」→「生成」,查看是否勾选了「启用 Razor 视图的运行时编译」(针对ASP.NET Core项目)。也可以打开项目的.csproj文件,检查是否有冲突的配置项,比如<MvcRazorCompileOnPublish>或<RazorCompileOnBuild>,确保这些设置和项目类型匹配。修复Visual Studio安装
如果以上步骤都没用,可能是VS的ASP.NET相关组件损坏了。打开Visual Studio Installer,选择你的VS版本点击「修改」→「修复」,修复Web开发相关组件后再重试。排查第三方插件干扰
如果你安装了Resharper、CodeRush这类代码分析插件,试试暂时禁用它们。这类插件的缓存可能和VS原生的IntelliSense冲突,导致误报红下划线。
内容的提问来源于stack exchange,提问作者Burhan Draksibai

