簡體   English   中英

ASP.NET MVC3定期刷新結果,而無需重新加載頁面

[英]Asp.net mvc3 periodic refresh of results without reloading the page

我將asp.net MVC3用於網站,該網站在視圖中使用foreach顯示查詢結果(在控制器中管理)。

我現在想要做的是每隔一段時間自動刷新查詢的輸出,而無需刷新頁面。

如何使用Ajax做到這一點?

這是視圖的代碼:

@{
    string firstTime = "";
}
 @foreach( var database in Model)
 {

        if (!(firstTime == database.DB))
        {
          <h3> @database.DB </h3>
        }

           <div class="logContainer" onclick="location.href='/logs/Details?databaseID=@database.DB&exceptionName=@database.Exception&exceptionsOccurred=@database.Count';">
                <div class="counter"><b>@database.Count</b></div> 
                <div class="exceptionName"> Exceptions of Type: @database.Exception</div>
                <div class="date">Siste: @database.LastOccurred</div>
           </div>
       <hr />

     firstTime = database.DB; 
}

您可以使用window.setInterval javascript方法將AJAX請求定期發送到服務器,並刷新DOM的相應部分。 例如,如果您想每10秒刷新一次內容:

window.setInterval(function() {
    $.post('@Url.Action("someaction", "somecontroller")', function(result) {
        $('#results').html(result);
    });
}, 10 * 1000);

這將向控制器操作發送一個AJAX請求,該操作又可以返回包含更新結果的局部視圖:

pubilc ActionResult SomeAction()
{
    SomeViewModel model = ...
    return PartialView(model);
}

然后,該部分視圖的結果將注入到具有id="results" DOM元素中。

您可以使用JSON傳遞查詢結果並自己從javascript呈現HTML,也可以將for-each代碼分離到不同的局部視圖,然后使用jQuery的$ .ajax方法以新響應更改查詢結果的div html。

為什么不將數據放入現有的網格控件(如DataTables)中 ,該控件是輕量級的,非常快速且可擴展。 然后,使用JavaScript計時器,告訴數據表刷新其內容。

我已經將此與MVC3一起使用,效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM