查看组件:
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;的合适构造函数。无法找到。确保类型是具体的,并为公共构造函数的所有参数注册服务。
答案 0 :(得分:77)
问题是你的构造函数是私有的:
X-Y
它应该公开,否则DI无法访问它:
imagesc