如何在MVC 3中不断更新查询?

时间:2012-06-12 12:04:36

标签: c# ajax asp.net-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的动态文本?

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

答案 2 :(得分:-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); 
    }

答案 3 :(得分:-2)

我会跳进SignalR。听起来很有趣。