You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中如何创建兼容ViewerComponent的组件分组文件夹?

解决组件分组文件夹路径找不到的问题

原因分析

在ASP.NET Core的Razor组件或MVC视图组件体系中,视图文件的查找遵循约定式路径规则。当你将A11、A12这类组件嵌套到A1子文件夹后,默认的查找逻辑不会自动遍历Components目录下的子层级,直接引用组件名称会匹配不到对应的视图文件,从而触发路径找不到的错误。

解决方法

方法1:调用时指定完整路径

在调用组件时,带上父级文件夹的完整路径:

  • MVC视图组件调用:
@await Component.InvokeAsync("A1/A11")
  • Razor组件(.NET 6+)调用:
<A11 ViewName="A1/A11/Default" />

方法2:扩展视图查找约定

在Program.cs(或旧版Startup.cs)中配置视图引擎的查找规则,让框架支持Components目录下的子文件夹结构:

services.Configure<RazorViewEngineOptions>(options =>
{
    // 添加子文件夹的视图查找格式
    options.ViewLocationFormats.Add("/Views/Shared/Components/*/{0}/{1}.cshtml");
});

该配置会让框架自动扫描Components目录下的所有子文件夹,匹配对应的组件视图。

方法3:给组件类指定视图路径

如果是自定义的视图组件类,可通过ViewComponent特性或直接在返回视图时指定完整路径:

[ViewComponent(Name = "A11")]
public class A11ViewComponent : ViewComponent
{
    public IViewComponentResult Invoke()
    {
        return View("/Views/Shared/Components/A1/A11/Default.cshtml");
    }
}

这种方式直接硬编码视图路径,绕过默认的约定查找,确保框架能准确定位到嵌套文件夹中的视图文件。


内容的提问来源于stack exchange,提问作者Copsychusz Viharasoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:37:11