gpt4 book ai didi

c# - asp.net 核心 Razor 页面 'loading indicator'

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:44 24 4
gpt4 key购买 nike

我是一般网络开发的新手,所以我怀疑我误解了 Razor 页面的核心前提。

我正在尝试在提取数据时向我的页面添加一个加载指示器。虽然这可以通过 js promise 实现,但我假设我可以完全在 c# 中使用 cshtml 文件完成此操作。

在我的 Controller 中,我有一个页面模型,如下所示:

public Boolean IsLoading { get; set; } = true;

public async Task<IActionResult> OnGetAsync()
{
await Task.Run(() =>
{
Thread.Sleep(1000 * 10);
IsLoading = false;
});
return Page();
}

只是用来模拟昂贵的数据库查询,以及一个指示加载何时完成的 bool 值。

在我的页面文件中我有这样的东西:

@if (@Model.IsLoading)
{
<div>
<img src="~/Images/loading.gif" />
</div>
}
else
{
<div>
<<Some Code Showing My Data>>
</div>
}

我尝试了多种方法来尝试更新模型或在数据拉取完成后重绘页面,但我一直找不到任何可行的方法。

理想的行为是让页面显示加载符号,直到“数据库查询”完成,然后显示数据。

我看到的当前行为是,在“数据库查询”完成之前,页面不会显示百分比。所以我从来没有看到加载 gif。

最佳答案

通常,如果 IsLoading 属性为 true,您应该会看到加载图像。您看不到它的原因是 IsLoading 永远不是 true。发生这种情况是因为您正在使用 await 关键字。通过使用它,这部分代码:return Page(); 仅在任务完成后到达。所以当返回 Page 对象时,IsLoading 属性为 false

另外,重申一下@LosManos 的回答,C# 不能在客户端执行。所以即使显示了图像,您仍然需要 JavaScript 来查询服务器以检查作业是否已完成并隐藏图像。

关于c# - asp.net 核心 Razor 页面 'loading indicator',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com