我正在使用C#MVC5和EF6構建一個博客應用程序。我在幾個地方使用SignalR,但現在正在嘗試設置它,以便主頁(顯示最新博客列表)的用戶自動將新博客添加到頂部(如果添加了一個博客,重新在頁面上。爲此,我設置了一個計時器,每隔60秒檢查一次數據庫,以查看自上次檢查以來是否添加了博客。如何從SignalR廣播中返回部分視圖?
//This is called every 60 seconds.
public void CheckForNewBlogs(object state)
{
//check if there has been a new blogs since last check
List<BlogViewModel> blogs = blogRepo.GetBlogs().Where(a => a.Created > lastTimeChecked).Select(a => new BlogViewModel(a, user)).ToList();
lastTimeChecked = DateTime.Now;
foreach (BlogViewModel blog in blogs)
{
BroadcastNewBlog(blog);
}
}
這是我的問題是,我可以創建新博客的模型時,有一個,但我不知道如何我然後創建通過SignalR發送到客戶端的局部視圖。
在使用SignalR的其他情況下,它都在Controller內,所以我使用了PartialViewToString函數。我是否必須創建控制器實例,還是有更好的方法?
任何幫助表示讚賞。謝謝。
對不起,我應該提到。博客通過一個單獨的系統添加到數據庫中,因此我無法使用創建事件來廣播該帖子。此外,我認爲這樣做意味着只有一個數據庫調用來創建博客,如果我發送URL,這意味着每個用戶在網站上的數據庫調用。記住你的提議。謝謝。 – AndrewPolland
如果您恰當地使用輸出緩存,它也只會意味着一次調用DB。 – vtortola
聽起來像一個計劃。謝謝。看看我現在能否以這種方式工作。 – AndrewPolland