ViewComponent 必须有一个名为 'InvokeAsync' 或 'Invoke' 的公共方法 - ASP.NET CORE (.NET 6)



我现在正在使用.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一个名为InvokeAsyncInvoke的公共方法

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

而且它运行得很好

相关内容

  • 没有找到相关文章

最新更新