C# 如何从信号广播返回部分视图?

C# 如何从信号广播返回部分视图?,c#,signalr,asp.net-mvc-5,entity-framework-6,C#,Signalr,Asp.net Mvc 5,Entity Framework 6,我正在使用C MVC5和EF6构建一个博客应用程序。我在一些地方使用了SignalR,但现在我正在尝试设置它,以便在显示最新博客列表的主页上的用户,如果在页面上添加了一个新博客,就会自动将其添加到顶部。为此,我设置了一个计时器,每60秒检查一次数据库,查看自上次检查以来是否添加了博客 //This is called every 60 seconds. public void CheckForNewBlogs(object state) { //check if there has be

我正在使用C MVC5和EF6构建一个博客应用程序。我在一些地方使用了SignalR,但现在我正在尝试设置它,以便在显示最新博客列表的主页上的用户,如果在页面上添加了一个新博客,就会自动将其添加到顶部。为此,我设置了一个计时器,每60秒检查一次数据库,查看自上次检查以来是否添加了博客

//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发送给客户端

在其他使用Signal的情况下,它都在一个控制器中,因此我使用了PartialViewToString函数。我必须创建控制器的实例,还是有更好的方法


谢谢你的帮助。谢谢。

我不会通过信号器推送视图。我将推送一个事件,警告页面存在一个具有给定URL的新博客帖子,然后页面可以继续以常规方式获取该页面/视图

此外,我没有计时器来检查数据库中是否有新内容。当一个新帖子被创建时,作为创建的最后一步,我将广播一个事件,说一个新帖子仍然存在


要通过SignalR推送ASP.NET MVC生成的视图,您必须模拟一个请求并经历许多麻烦,这些麻烦会使ASP.NET的许多功能(如安全性)变得无用。此外,如果您通过SignalR推送视图,您将无法从HTTP缓存中获得好处。

很抱歉,我应该提到。博客是通过一个单独的系统添加到数据库中的,所以我不能使用创建事件来广播帖子。另外,我认为这样做意味着只有一个数据库调用来创建博客,如果我发送URL,这将意味着每个站点上的用户都有一个数据库调用。记住你的建议。谢谢。如果你适当地使用输出缓存,那就意味着只需要对数据库进行一次调用。听起来像是一个计划。谢谢看看我现在是否能让它这样工作。