VS2022中Umbraco 9 cshtml视图IntelliSense失效解决方法
Umbraco 9.5.1 VS2022 Razor视图智能提示配置方案
Umbraco 9默认的ModelsBuilder配置为内存生成模式,强类型模型仅在项目运行时加载到内存中,Visual Studio无法索引到相关类型定义,因此cshtml视图中Model成员无智能提示。手动添加配置后报错,通常是配置节点不完整、模型目录选择不符合Umbraco安全规则导致的,按以下步骤配置即可:
第一步:补全appsettings.json正确配置
不要将模型生成目录放在~/umbraco开头的系统运行目录下,避免被系统覆盖、触发目录安全校验,完整配置段如下:
{ "Umbraco": { "CMS": { "ModelsBuilder": { "ModelsMode": "SourceCodeAuto", "ModelsDirectory": "~/Models/Generated", "AcceptUnsafeModelsDirectory": true, "ModelsNamespace": "Umbraco.Cms.Web.Common.PublishedModels" } } } }
配置参数说明:
SourceCodeAuto模式下,文档类型变更后会自动生成模型类文件,开发阶段无需手动触发生成;如果需要手动控制生成时机,可替换为SourceCodeManualAcceptUnsafeModelsDirectory参数用于放开非默认目录的写入权限,解决目录安全校验报错问题- 保持默认模型命名空间,无需额外在视图中引入命名空间
第二步:生成并引入模型文件
- 启动项目,进入Umbraco后台,在「设置」板块找到Models Builder入口,点击生成模型(SourceCodeAuto模式会自动完成首次生成)
- 生成完成后关闭项目,回到Visual Studio的解决方案资源管理器,点击顶部「显示所有文件」按钮,找到配置中指定的
Models/Generated文件夹,右键选择「包括在项目中」
第三步:配置视图基类开启强类型提示
打开Views目录下的_ViewImports.cshtml文件,补充全局视图基类配置,避免每个视图单独声明:
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage @using Umbraco.Cms.Web.Common.PublishedModels @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
针对特定强类型模板页,可以在页面顶部单独指定对应模型类型,示例:
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<首页模型类名>
第四步:清理VS缓存(配置后仍无提示时操作)
- 完全关闭Visual Studio
- 删除项目根目录下的隐藏
.vs文件夹,以及项目下的bin、obj目录 - 重新打开项目,重新生成解决方案,等待VS完成文件索引后,打开cshtml文件即可正常显示Model成员智能提示
注意:不要修改默认模型的命名空间,不要将生成的模型文件纳入版本控制,每次文档类型变更后等待模型自动生成,再重新生成项目即可同步提示内容。
内容的提问来源于stack exchange,提问作者eugenekr
相关产品推荐
相关产品推荐

