2012-06-12 33 views
-4

我正在尋找一種簡單的方法,在我的視圖更新中近乎實時地製作一段文字,恰好是一個數字。如何在MVC 3中不斷更新查詢?

我有我的觀點一段文字,看起來像這樣:

<% if (ViewData["TotalRecords"] != null) 
    { %> 
<%= ViewData["TotalRecords"].ToString() + 
        " records available to search."%> 
<% } %><br /> 

我想ViewData["TotalRecords"]是一個不斷更新的值,每隔60秒左右。

查詢底下是:

public static string GetTotalRecords() 
     { 
      DataContext dc = new DataContext(); 
      return dc.Records.Count().ToString("#,##0"); 
     } 

我怎樣才能讓這個陷入某種支持Ajax動態一段文字?

回答

5

此舉部分單獨行動

public ActionResult TotalRecords() 
{ 
    var totalRecords = GetTotalRecords(); 
    return PartialView(totalRecords); 
} 

在父視圖,最初渲染

<div id="totalRecords"> 
    @Html.RenderAction("TotalRecords")` 
</div> 

而且腳本行動setInterval重裝總記錄每60秒動作一次

<script> 

$(function(){ 
    setInterval("reloadTotalRecords", 60 * 1000); 
}); 

function reloadTotalRecords() 
{ 
    $('#totalRecords').load('@Url.Action("TotalRecords")'); 
} 

</script> 
0

在那裏肯定會有一些JavaScript。可以使用setTimeout來調用返回數字的ajax方法,該方法用於更新瀏覽器中的內容。

您可以使用jQuery來定位特定元素。 this question上有一些例子。

-1

我相信這應該解決你的問題: jQuery Ajax setTimeout JSON

使用JavaScript setTimeout函數調用一個Ajax功能,每60秒。

喜歡的東西:

function updateContent() { 
    $.ajax({ 
     url: 'url', 
cache:false, 
     success: function(data) { 
    $('#item-id').html(data.NewValue); 
    }, 
     dataType: 'json' 
    }); 
    } 

    $(function() { 
     setTimeout(updateContent, 60000); 
    } 
-2

我會跳進SignalR。聽起來不錯。

+0

我一直在使用SignalR,我喜歡它,但我認爲它可能是矯枉過正的使用它,而不是一個簡單的,定時的AJAX請求 – harriyott