2014-12-05 110 views
1

我有一個功能,從互聯網上獲取大量的數據。大約需要15秒才能獲得所有數據。 如何顯示文本(如「加載數據」),但它仍在加載。 現在,它看起來像這樣:顯示「加載」,同時從控制器加載數據

  1. 我進入頁面

  2. 我的 「索引」 加載我的 「LoadData」 功能。

  3. 功能將數據存儲到ViewBags

  4. 該函數返回查看

在查看:

<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爲空時顯示「加載」。

你有什麼不錯的例子,這一點?¨

回答

1

剃刀代碼在服務器端進行評估。這意味着一旦客戶端加載了視圖,就沒有代碼可以運行了。該頁面就在那裏。如果viewbag爲空,則不能編寫加載部分視圖的while循環(在Razor中)。你需要在JavaScript中做到這一點。

如果你想讓頁面一直刷新,你需要一個計時器。使用jQuery .get()通過AJAX加載部分視圖。使用AJAX處理請求時,可以使用jQuery .ajaxStart().ajaxComplete()來顯示和隱藏「正在加載...」標籤。

.get()

.ajaxStart()

.ajaxComplete()

相關問題