我有一个blazor组件,我想传递从后端获取的数据。每组数据都有一个不同的实体名称,因此在到达组件时,我很难将其转换为通用类型。我的错误在哪里?谢谢
在父级的ChildData = @ sysList上获得以下错误:
参数1:无法从Test2.Shared.Models.MeasurementSystem []转换为System.Collections.Generic.IReadOnlyList []
父母
eulerAngles
孩子
<ChildComponent ChildData=@sysList TItem=@Test2.Shared.Models.MeasurementSystem</ChildComponent>
<ChildComponent ChildData=@unitList TItem=@Test2.Shared.Models.MeasurementUnit</ChildComponent>
<ChildComponent ChildData=@groupList TItem=@Test2.Shared.Models.MeasurementGroup</ChildComponent>
@functions {
private Test2.Shared.Models.MeasurementSystem[] sysList { get; set; }
private Test2.Shared.Models.MeasurementUnit[] unitList { get; set; }
private Test2.Shared.Models.MeasurementGroup[] groupList { get; set; }
protected override async Task OnInitAsync()
{
sysList = await Http.GetJsonAsync<Test2.Shared.Models.MeasurementSystem[]>("/api/System/Index");
unitList = await Http.GetJsonAsync<Test2.Shared.Models.MeasurementUnit[]>("/api/Unit/Index");
groupList = await Http.GetJsonAsync<Test2.Shared.Models.MeasurementGroup[]>("/api/Group/Index");
}
}
课程
@typeparam TItem
@foreach (var data in ChildData)
{
<p @data.Name>
}
@functions {
[Parameter] private IReadOnlyList<TItem>[] ChildData { get; set; }
}
答案 0 :(得分:0)
尝试一下:
[Parameter] private IReadOnlyList<TItem> ChildData { get; set; }
代替此:
[Parameter] private IReadOnlyList<TItem>[] ChildData { get; set; }
我不确定您要做什么... 为什么不使用模板化组件?
但是,请尝试执行以下操作: 这个:
private List<Test2.Shared.Models.MeasurementSystem> sysList { get; set; }
代替:
private Test2.Shared.Models.MeasurementSystem[] sysList { get; set; }
并且:
sysList = await Http.GetJsonAsync<List<Test2.Shared.Models.MeasurementSystem>>("/api/System/Index");
代替:
sysList = await Http.GetJsonAsync<Test2.Shared.Models.MeasurementSystem[]>("/api/System/Index");
对其余类型执行相同操作...如果不起作用,请改用模板化组件。
这是什么:<p @data.Name>