我现在正在使用.NET6设计一个网站,与旧版本的ASP.NET Core不同,这个版本没有@{Html.RenderPartial("_ViewNamePartial")}
这样的方法,所以我使用ViewComponents,但当我尝试渲染它时,它会抛出一个错误:
InvalidOperationException:视图组件"aquaWeb.ViewComponents.ProductCardViewComponent"必须只有一个名为"InvokeAsync"或"Invoke"的公共方法
这是我的代码:
调用ViewComponent的父页:
<html>
<body>
<div class="row">
<div class="col-md-9">
@await Component.InvokeAsync("ProductCard");
</div>
</div>
</body>
</html>
查看组件:
public class ProductCardViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
return await Task.FromResult((IViewComponentResult)View());
}
public IViewComponentResult Invoke()
{
return View();
}
}
所以显然错误是:
ViewComponent必须具有ONLY一个名为InvokeAsync或Invoke的公共方法
ViewComponent只想要一个方法,而不是太多或更少
下次会更仔细地阅读。。。
我更改了我的ViewComponent类:
public class ProductCardViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
return await Task.FromResult((IViewComponentResult)View());
}
public IViewComponentResult Invoke()
{
return View();
}
}
对此:
public class ProductCardViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
return await Task.FromResult((IViewComponentResult)View());
}
}
而且它运行得很好