Mvc Core 2.0 посмотреть компоненты

Я работаю с проектом MVC Core 2.0, но компонент просмотра не работает.

Я получаю эту ошибку

InvalidOperationException: не удалось найти метод Invoke или InvokeAsync для компонента представления

[ViewComponent(Name = "Footer")]
public class FooterViewComponent : ViewComponent
{
    public ViewViewComponentResult Invoke()
    {      
        var model = new FooterModel();

        return View(model);
    }
}

2 ответа

Измените тип возврата Invoke на IViewComponentResult:

[ViewComponent(Name = "Footer")]
public class FooterViewComponent : ViewComponent
{
    public IViewComponentResult Invoke()
    {
        var model = new FooterModel();

        return View(model);
    }
}

и в представлении используйте это как:@await Component.InvokeAsync(typeof(FooterViewComponent))

Я использую ASP.Net Core 2.0 и компоненты представления работают нормально для меня.

В моей реализации метод Invoke компонента представления должен быть методом Async и должен возвращать Task в качестве вывода. Вот как это работает для меня:

Мой вид Компонент:

public class XTestEntityViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync(int id)
    {
       // Put your stuff here . . . 
    }
}

И вы можете получить к нему доступ из любого представления в вашем приложении следующим образом:

@await Component.InvokeAsync("XTestEntity", new { id = 4 })

надеюсь, это поможет

Другие вопросы по тегам