为什么在Blazor WebAssembly GetItemsAsync <T>中运行的Kentico-Kontent .NET SDK返回所有类型的项目?

问题描述

我一直在尝试Blazor WebAssembly,并尝试连接到现有的Kentico Kontent API。

我使用DotNet Tool KontentModelGenerator生成了模型,然后将其传递给Kentico的IDeliveryClient实现。

@code{
    private IEnumerable<DinghyClass> dinghyClasses;
    protected override async Task OnInitializedAsync()
    {
        dinghyClasses = (await deliveryClient.GetItemsAsync<DinghyClass>()).Items;
    }
}

然后,它返回Kentico项目中的所有项目(即所有类型的内容模型),而不仅仅是返回所请求类型的项目。

我做错什么了吗?这是Kentico的DeliveryClient的问题,还是Blazor如何解释它的问题?从返回的数据中创建了一些填充对象的事实,这表明Javascript正在填充对象而没有任何形式的类型检查。

我在GitHub上有一个部署Here的示例。该页面应列出5个小艇类,但每个其他内容项也都有一个(空)对象。在chrome调试器上查看“网络”标签时,将返回所有项目,而不仅仅是DinghyClass项。

解决方法

在查看(和测试)GitHub存储库中的代码时,似乎您已经生成了CustomTypeProvider,但未在Program.cs中注册。当我添加时:

builder.Services.AddSingleton<ITypeProvider,CustomTypeProvider>();

对于解决方案中的Program.cs,SDK返回了5个小艇类结果。