2016-08-23 10 views
11

Zobacz Składnik:Nadaje konstruktor typu nie stwierdzono (Zobacz Component)

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

w widoku ~/views/Pracownicy/Details.cshtml

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

Komponent View znajduje się w ~ Wyświetleń /Shared/Components/Widget/Default.cshtml

błąd zgłaszany jest poniżej:

InvalidOperationException: Nie można znaleźć odpowiedniego konstruktora dla typu "MyApp.ViewComponents.WidgetViewComponent". Upewnij się, że typ jest konkretny, a usługi są zarejestrowane dla wszystkich parametrów publicznego konstruktora.

Odpowiedz

30

Problemem jest to, że konstruktor jest prywatny:

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

To powinno być publiczne inaczej DI nie można uzyskać do niego dostęp:

public WidgetViewComponent(IWidgetService widgetService) 
{ 
    _WidgetService = widgetService; 
} 
Powiązane problemy