我使用ASP.net核心3.1和Entity Framework核心创建Balzor服务器应用程序。 问题在于,由于Db调用需要一段时间才能取回记录,并且EF内核中没有内置异步功能,因此我决定在页面加载几秒钟后延迟拉行。 但是问题是代码运行后我的HTML不会更新。 没有任务延迟,我可以看到数据。为什么不更新我的UI / HTML?
HTML
@if (_allRequestForHelp.Count > 0)
{
@foreach (var item in _allRequestForHelp)
{
}
}
protected override void OnInitialized()
{
telemetryClient.TrackPageView("RegisterForHelp");
// want to run this async other page hangs until the data comesback
Task.Delay(2000).ContinueWith(t => loadPreviousRequestForHelps());
base.OnInitialized();
}
private async Task loadPreviousRequestForHelps()
{
if (appStateInfo.IsAuthenticated)
{
_allRequestForHelp = (from b in dbContext.RequestHelp where b.UserID.ToString() == appStateInfo.UserID orderby b.UTCDateCreated descending select b).ToList();
StateHasChanged();
}
}
答案 0 :(得分:0)
我使用了异步版本OnInitialized
受保护的异步覆盖任务OnInitializedAsync()
其他所有内容都保持不变,并且现在可以正常使用