找不到合适类型的构造函数(View Component)

时间:2016-08-23 15:59:39

标签: c# asp.net-core asp.net-core-mvc

查看组件:

public class WidgetViewComponent : ViewComponent
{
    private readonly IWidgetService _WidgetService;

    private WidgetViewComponent(IWidgetService widgetService)
    {
        _WidgetService = widgetService;
    }

    public async Task<IViewComponentResult> InvokeAsync(int widgetId)
    {
        var widget = await _WidgetService.GetWidgetById(widgetId);
        return View(widget);
    }
}

在视图〜/ Views / Employees / Details.cshtml

@await Component.InvokeAsync("Widget", new { WidgetId = Model.WidgetId } )

视图组件位于〜Views / Shared / Components / Widget / Default.cshtml

我收到的错误如下:

  

InvalidOperationException:类型&#39; MyApp.ViewComponents.WidgetViewComponent&#39;的合适构造函数。无法找到。确保类型是具体的,并为公共构造函数的所有参数注册服务。

1 个答案:

答案 0 :(得分:77)

问题是你的构造函数是私有的:

X-Y

它应该公开,否则DI无法访问它:

imagesc