【问题标题】:Why is Kentico-Kontent .NET SDK running in Blazor WebAssembly GetItemsAsync<T>() returning items of all types?为什么在 Blazor WebAssembly GetItemsAsync<T>() 中运行的 Kentico-Kontent .NET SDK 返回所有类型的项目?
【发布时间】:2020-09-08 16:26:02
【问题描述】:

我一直在试用 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 调试器上的 Network 选项卡时,所有项目都被返回,而不仅仅是 DinghyClass 项目。

【问题讨论】:

    标签: blazor-webassembly kentico-kontent


    【解决方案1】:

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

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

    到您的解决方案中的 Program.cs,SDK 返回了 5 条小艇类结果。

    【讨论】:

    • 是的,行得通。 KontentModelGenerator 有一个withtypeprovider 参数,默认设置为true。如果需要通过 DI 提供类型提供程序,我对 sdk 的工作原理很感兴趣。我假设提供的会覆盖默认的 ITypeProvider 实现 - 尽管该默认实现破坏了 SDK...我原以为 SDK 应该检查这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2020-09-20
    • 2021-08-31
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    相关资源
    最近更新 更多