我已经创建了一个视图组件。
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。
答案 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]