找不到名为“ PreviewCV”的视图组件

时间:2019-03-19 21:55:49

标签: c# asp.net-core

我已经创建了一个视图组件。

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”修饰,或者其类名以结尾视图组件的后缀。视图组件不得使用“ NonViewComponentAttribute”修饰。

我正在使用.net core。

3 个答案:

答案 0 :(得分:2)

-在“模型”文件夹中

文件名:nf = os.stat(IQ_File).st_size // struct.calcsize('f')

-在TestViewComponent类中

TestViewComponent.cs

在后缀[ViewComponent(Name = "TestViewComponent")] //Solution public class TestViewComponent: ViewComponent { public IViewComponentResult Invoke() { return View(); } } 中解决此问题。

答案 1 :(得分:0)

如柯克·拉金(Kirk Larkin)所建议。我需要在类中包含View。

答案 2 :(得分:0)

使用net core 5.0,类名(例如PreviewCV)可以写成PreviewCV OR PreviewCVViewComponent

所以

public class PreviewCV : ViewComponent

public class PreviewCVViewComponent : ViewComponent

会正常工作,而下面会产生错误(与问题中所示相同)

public class PreviewCVComponent : ViewComponent

还注意到属性对这些没有任何影响

[ViewComponentAttribute]