-4

我正在寻找一种简单的方法来制作一段文本,它恰好是一个数字,以近乎实时的方式更新我的视图。

我的视图中有一段文字,如下所示:

<% 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 的动态文本?

4

4 回答 4

5

将该部分移动到单独的操作

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

在父视图中,最初使用

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

并使用setInterval编写脚本以每 60 秒重新加载 TotalRecords 操作

<script>

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

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

</script>
于 2012-06-12T12:12:48.943 回答
0

那里的某个地方必须有一些 JavaScript。AsetTimeout可用于调用返回数字的 ajax 方法,然后用于更新浏览器中的内容。

您可以使用 jQuery 来定位特定元素。关于这个问题有一些例子。

于 2012-06-12T12:08:06.853 回答
-1

我相信这应该可以解决您的问题: jQuery Ajax setTimeout JSON

使用 JavaScript setTimeout 函数每 60 秒调用一次 Ajax 函数。

就像是:

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

    $(function () {
        setTimeout(updateContent, 60000); 
    }
于 2012-06-12T12:12:01.767 回答
-2

我会跳进SignalR。听起来不错。

于 2012-06-12T12:15:11.547 回答