如何按计划将partial view添加至视图,实现定时从控制器更新表格数据
你之前尝试的服务端定时任务框架本身功能没问题,失败的核心原因是服务端后台任务和用户浏览器端的页面没有直接通信通道,后台任务执行生成的数据无法主动传递到前端,自然没办法更新视图。
下面是两种可落地的实现方案:
方案1:前端轮询(推荐,实现成本最低)
这个方案完全不需要用到服务端定时任务,逻辑全部由前端主动触发:
- 前端页面加载完成后,启动一个定时器,间隔10分钟向你的后端控制器接口发起请求
- 控制器实现对应接口,查询最近10分钟需要新增的表格数据,直接返回给前端
- 前端拿到返回数据后,将数据追加到页面表格中完成更新
前端示例代码(原生JS):
// 10分钟对应的毫秒数 const UPDATE_INTERVAL = 10 * 60 * 1000 setInterval(async () => { const res = await fetch('/api/table/get-increment-data') const newData = await res.json() // 此处写入你的表格追加逻辑,比如操作DOM或者调用前端框架的表格更新方法 appendDataToTable(newData) }, UPDATE_INTERVAL)
方案2:服务端主动推送(适合低延迟更新场景)
如果不想前端频繁发起请求,或者后续有更短间隔的更新需求,可以用长连接方案,你之前写的定时任务逻辑可以直接复用:
- 如果你是.NET技术栈,可以接入SignalR建立浏览器和服务端的WebSocket长连接
- 原有定时任务(Quartz/Coravel等)执行生成新数据后,注入SignalR的
IHubContext,调用推送方法将新数据主动发送给所有在线前端 - 前端监听SignalR的推送事件,收到数据后直接更新表格
选型建议
如果你的需求就是固定10分钟更新一次,优先选择前端轮询方案,不需要修改现有服务端逻辑,开发和调试成本极低,完全可以满足需求。
内容的提问来源于stack exchange,提问作者AngrySharp
相关产品推荐
相关产品推荐

