首页 > 解决方案 > 找不到名为“PreviewCV”的视图组件

问题描述

我创建了一个视图组件。

public class PreviewCVComponent : ViewComponent
{
 ..


    public async Task<IViewComponentResult> InvokeAsync(int id)
    {
        return View();
    }
}

我在views/shared/components 中添加了一个名为PreviewCV 的文件夹。在该文件夹下,我添加了一个名为 Default.cshtml 的视图。

从另一个视图调用组件。它位于views/CV 下,名称为CV.cshtml。

我正在尝试使用

@await Component.InvokeAsync("PreviewCV", new { id = -1 })

这导致:

InvalidOperationException:找不到名为“PreviewCV”的视图组件。视图组件必须是公共的非抽象类,不包含任何泛型参数,并且使用“ViewComponentAttribute”装饰或具有以“ViewComponent”结尾的类名' 后缀。视图组件不得使用 'NonViewComponentAttribute' 修饰。

我正在使用.net 核心。

标签: c#asp.net-core

解决方案


--在模型文件夹中

文件名:TestViewComponent.cs

--在TestViewComponent类中

[ViewComponent(Name = "TestViewComponent")] //Solution
public class TestViewComponent: ViewComponent
{
    public IViewComponentResult Invoke()
    {
        return View();
    }
}

放入ViewComponent后缀即可解决问题。


推荐阅读