2016-08-23 55 views
11

查看組件:類型的合適的構造未找到(查看組件)

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); 
    } 
} 

在視圖〜/查看/僱員/ Details.cshtml

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

視圖組件位於〜觀/Shared/Components/Widget/Default.cshtml

我收到的錯誤是如下:

InvalidOperationException:無法找到類型爲「MyApp.ViewComponents.WidgetViewComponent」的合適構造函數。確保類型是具體的,並且爲公共構造函數的所有參數註冊服務。

回答

30

的問題是,你的構造函數是私有:

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

應該是公開的,否則DI不能訪問它:

public WidgetViewComponent(IWidgetService widgetService) 
{ 
    _WidgetService = widgetService; 
} 
相關問題