使用 Razor Pages 在 Asp.NET Core 2.2 中找不到 ViewComponent

Cha*_*hau 4 c# razor asp.net-core-viewcomponent asp.net-core-2.2

我创建了一个非常简单的视图组件(/ViewComponents/MenuViewComponent.cs):

namespace MySite.ViewComponents
{    
    public class MenuViewComponent : ViewComponent
    {
        public Task<IViewComponentResult> InvokeAsync()
        {
            return Task.FromResult((IViewComponentResult)View("Default"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

视图部分在这里(/Pages/Components/Menu/Default.cshtml):

<div>Menu</div>
Run Code Online (Sandbox Code Playgroud)

我从文件中调用菜单,_Layout.cshtml如下所示:

@await Component.InvokeAsync("MenuViewComponent");
Run Code Online (Sandbox Code Playgroud)

查看页面时,我收到以下错误消息:

InvalidOperationException: A view component named 'MenuViewComponent' could not be found.
A view component must be a public non-abstract class, not contain any generic parameters, 
and either be decorated with 'ViewComponentAttribute' or have a class name ending with the 'ViewComponent' suffix. 
A view component must not be decorated with 'NonViewComponentAttribute'.
Run Code Online (Sandbox Code Playgroud)

问题
为了让它正常工作,我缺少什么?

Nko*_*osi 5

确保组件视图位于搜索路径中,如下所述

参考ASP.NET Core 中的视图组件

并且在调用组件时只需使用不带后缀的名称

@await Component.InvokeAsync("Menu") 
Run Code Online (Sandbox Code Playgroud)