首页 > 解决方案 > 如何在剃须刀组件中即时显示信息列表

问题描述

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

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

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

这很好..但它首先从数据库加载所有数据,当它最终完成时,它开始呈现页面/结果。

我想显示已立即加载的结果,随着加载的继续在网页上弹出响应。任何想法我将如何实施?

谢谢!

标签: c#entity-frameworkblazor

解决方案


你所描述的与所做的相匹配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();
    }
}

请注意,这不是一种非常有效的数据移动方式,但它可能适用于某些场景。


推荐阅读