ASP.NET Core .NET 5中cshtml文件提示model不存在于当前上下文如何解决
ASP.NET Core .NET 5 Razor语法识别失效解决方案
以下是逐一排查修复的步骤:
- 检查Views根目录的
_ViewImports.cshtml配置
该文件必须放置在Views文件夹根路径,需包含对应命名空间导入和TagHelper配置,示例配置如下:
该文件负责全局Razor配置,缺失或配置错误会直接导致@model、@using等指令全部失效。@using Bookstore @using Bookstore.Models @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers - 验证项目SDK类型
右键项目选择「编辑项目文件」,确认文件首行的Sdk属性为Microsoft.NET.Sdk.Web,如果误用了控制台项目的Microsoft.NET.Sdk,Razor相关编译组件不会加载,无法识别Razor语法。 - 确认异常cshtml文件属性
右键报错的.cshtml文件选择「属性」,确认「生成操作」设置为内容,「复制到输出目录」设置为如果较新则复制,属性配置错误会导致VS不将其识别为Razor视图文件。 - 清除缓存重建项目
关闭VS,删除项目根目录下的.vs、bin、obj三个文件夹,重新打开VS生成项目,绝大多数缓存导致的智能提示异常、语法识别错误都可以通过该操作修复。 - 检查Model类访问级别
确认Bookstore.Models.Author类的修饰符为public,非公开类无法被Razor视图访问,也会触发当前上下文找不到model的报错。
注:你提供的视图代码本身语法没有问题,DisplayNameFor中lambda的参数名model为局部变量,命名合法,问题均由项目配置异常导致。
内容的提问来源于stack exchange,提问作者bouthayna hamdi
相关产品推荐
相关产品推荐

