问题描述
我一直在尝试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个小艇类结果。