我有一个从互联网上获取大量数据的功能。获取所有数据大约需要15秒。 如何在仍在加载时显示文本(如“加载数据”)。 现在,它看起来像这样:
我进入页面
我的“索引”加载了我的“LoadData”功能。
该函数将数据存储到ViewBags
该函数返回View
在视图中:
<table class='table' id='vmTable' border='1'>
<tr>
<th>VM Name</th>
<th>Status</th>
<th>Shutdown Time</th>
<th>Service Name</th>
<th>Created Date</th>
<th>Last Modified</th>
<th>Port</th>
</tr>
@for (int i = 0; i < ViewBag.AmountOfVms; i++)
{
<tr class="tableColumn vmColumn">
<td class="vmName">@ViewBag.VMs[i, 0]</td>
<td class="vmStatus">@ViewBag.VMs[i, 1]</td>
<td class="vmShutDown">@ViewBag.VMs[i, 6]</td>
<td class="vmServiceName">@ViewBag.VMs[i, 2]</td>
<td class="vmCreatedDate">@ViewBag.VMs[i, 3]</td>
<td class="vmLastModified">@ViewBag.VMs[i, 4]</td>
<td class="vmPort">@ViewBag.VMs[i, 7]</td>
</tr>
}
</table>
我听说过Ajax并使用了部分视图。 那么,我可以将我的表显示为部分视图,然后说出
@if (ViewBag.VMs[i, 0] == null)
{
<td>Loading...</td>
}
然后每秒刷新部分视图?如何在页面上运行我的“LoadData”功能。 或者换句话说:当ViewBag为空时,我如何只显示“加载”。
你有什么好的例子吗?¨
答案 0 :(得分:1)
首先,我建议你开始使用Model而不是ViewBag。
其次,您只使用一种名为Ajax的技术:)
Render Partial View Using jQuery in ASP.NET MVC
你可以在这里看到一个例子:)
答案 1 :(得分:1)
Razor代码在服务器端进行评估。这意味着一旦客户端加载了视图,就不再有代码可以运行了。该页面就在那里。如果viewbag为空,则无法编写加载局部视图的while循环(在Razor中)。您需要在JavaScript中执行此操作。
如果您希望页面一直刷新,则需要一个计时器。使用jQuery .get()
通过AJAX加载局部视图。使用AJAX处理请求时,您可以使用jQuery .ajaxStart()
和.ajaxComplete()
来显示和隐藏&#34;正在加载...&#34;标签