Tag Helpers在Razor页面正常渲染但在ViewComponent中失效,求排查方向
我之前也碰到过一模一样的问题,给你几个实用的排查方向,应该能帮你解决:
检查ViewComponent视图的路径与命名
ViewComponent的视图必须放在约定的路径下:要么是Views/Shared/Components/{你的组件名}/Default.cshtml,要么是对应控制器的Views/{控制器名}/Components/{组件名}/Default.cshtml。如果路径或文件名不对,视图会被当作普通Razor文件处理,Tag Helper自然不生效。确保Tag Helper命名空间已导入
虽然全局的_ViewImports.cshtml通常会导入Tag Helper,但如果ViewComponent的视图没继承到这个文件的配置,就得手动在视图顶部添加:@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, 你的项目命名空间 // 若有自定义Tag Helper也需导入另外也可以检查
Views/Shared/_ViewImports.cshtml是否存在,这个文件的配置会被所有Shared目录下的视图(包括Components子目录)继承。验证ViewComponent类的定义
确认你的ViewComponent类正确继承了ViewComponent基类,并且命名符合约定(比如类名以ViewComponent结尾,或者添加了[ViewComponent(Name = "你的组件名")]特性)。类定义不规范的话,视图无法被正确识别为ViewComponent的视图,Tag Helper也就不会被解析。清理编译缓存并重新构建
有时候编译缓存会导致Tag Helper无法被正确加载。可以手动删除项目根目录下的bin和obj文件夹,然后重新编译运行项目,很多时候这种小问题就能解决。检查视图中是否有特殊语法干扰
确认你没有把Tag Helper代码放在@Html.Raw()这类会直接输出原始文本的方法里,或者没有被其他特殊Razor语法包裹导致无法解析。
内容的提问来源于stack exchange,提问作者StillLearnin

