如何在剃须刀组件中即时显示信息列表

时间:2019-12-12 16:06:24

标签: c# entity-framework blazor

我有一个数据库,并且表中有很多条目。我想使用blazor在网页上显示这些条目。

我尝试使用context.tableName.Load()context.tableName.Local加载条目,并使用

遍历条目
@foreach(var entry in localList){
    <p>@entry.Name</p>
}

那很好..但是它首先从数据库中加载所有数据,最后完成后,它开始呈现页面/结果。

我想显示立即加载的结果,随着加载的继续在网页上弹出响应。有什么想法可以实现吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您描述的内容与IAsyncEnumerable<>的内容匹配。

只是为了好玩,我对标准启动程序做了一些修改:

在WeatherForecastService中:

public async IAsyncEnumerable<WeatherForecast> GetForecastAsync(DateTime startDate)
{
    var rng = new Random();

    for (int i = 0; i < 77; i++)
    {
        yield return new WeatherForecast
        {
            Date = startDate.AddDays(i),
            TemperatureC = rng.Next(-20, 55),
            Summary = Summaries[rng.Next(Summaries.Length)]
        };
        await Task.Delay(100);
    }
}

,并在FetchData.razor页面中:

List<WeatherForecast> forecasts = new List<WeatherForecast>();

protected override async Task OnInitializedAsync()
{
    await foreach (var forecast in ForecastService.GetForecastAsync(DateTime.Now))
    {
        forecasts.Add(forecast);
        StateHasChanged();
    }
}

请注意,这不是一种非常有效的数据移动方式,但在某些情况下可能会起作用。