ASP Razor:显示数据库中的当前数据

时间:2014-05-01 20:30:35

标签: asp.net razor

我需要在网站上显示当前存储的数据,只有在数据发生变化时才自动刷新。

我目前的做法失败了:

  • 请求来自数据库的数据让我们说每10秒
  • 检查此数据是否与当前显示的数据不同

我做了什么:

setInterval(function() {refreshData()}, 5000);

function refreshData() {
        @{
            var db2 = Database.Open("StarterSite");    
            string tresc2 = db.QuerySingle(someQuery, 3).Tresc;


            <text>
                alert(@tresc2);
            </text>


        }        
    }

这里的问题是这段代码似乎工作正常,我没有收到任何错误消息,但@tresc2不存在。看起来db2也不存在。

我不明白这里发生了什么。

如果我可以提出两个问题:

  • 什么应该是解决我的问题的正确方法?
  • 我在这里做错了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

服务器端的代码被执行,当它呈现时,它变为

setInterval(function() {refreshData()}, 5000);

function refreshData() {
    alert(somevalue);
}

你得到的是你不断调用同样的功能来警告同一个消息。

更正确的方法是ajax-调用服务器并更新页面:

<div id="divToRefresh" />
<script type="text/ecmascript">

   $(function() {
     setInterval(function() {refreshData()}, 5000);

     function refreshData() {
       $.ajax( {
         url : 'controller/action',
         async : false,
         success: function(data) {
           $("#divToRefresh").html(data);
        }
     }
  });
</script>

这假设控制器/操作controller/action返回包含页面刷新片段的部分html。