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 })
надеюсь, это поможет