前幾天研究SSE,用瀏覽器做偵聽后台數據庫數據變化,如果有更新,就即時通過瀏覽器,使用SSE效果果然OK,偵聽數據庫有更新時馬上會向瀏覽器通知有新數據,我還在瀏覽器里放了短音提示,但遇到一個問題,發出短音提示時刷新頁面,即時顯示出數據的變化,由於網頁頁面中使用的元素復雜,使用JS來改變難度很大,還不如重新加載一次網頁來的方便,但整網頁重新加載會使用剛剛顯示的通知信息和短音提示消失,起不到通知客戶的效果,所以想來想去,還是局部刷新比較好,這時想到asp.net MVC4有個分部視圖可以做個局部刷新,實現了一下,達到了要求,以后應該多用分部視圖,大大提高靈活性。
具體實現就不寫了,來點簡單的思路:
1.寫好分部視圖的控制器
public PartialViewResult GetData(){ //這里加載一些頁面需要的數據,可以使用ViewBag,ViewData,還可以使用Model var list=dao.get......; return PartialView(list); }
2.寫好分部視圖的網頁
@model List<String> @using Info.Models; <div> //顯示從控制器獲取的數據庫 </div>
3.主頁中加入分部視圖
<div class="mainbox"> @{Html.RenderAction("GetData");} </div>
4.在主頁中使用JS加載分部視圖
var es=new EventSource("/Home/SSE"); es.onmessage=function(e){ if(e.data=="ok"){//說明數據庫有更新 $(".mainbox").load("/Home/GetData"); document.getElementById("mp3").play(); $("#msg").text("有新的數據已提交").show(); } }
這樣就實現了有新數據時即時更新頁面,通過分部視圖局部加載控制器中的數據到網頁頁面中。
