asp.net mvc -view显示实时进度状态

时间:2017-10-20 04:47:51

标签: c# asp.net-mvc

我希望在我的屏幕/页面/视图中显示进度,就像在控制台中一样。所以当我点击安装按钮时,我的" textarea"控件应该开始显示像

这样的进度

连接数据库 连接成功 运行脚本a.sql 运行脚本b.sql 操作完成 连接关闭

  1. textarea是否具有此目的的正确控制权?
  2. 似乎从服务器到客户端的行程太多只是为了在屏幕上写进度我该如何最小化呢?

2 个答案:

答案 0 :(得分:2)

为了能够轻松地执行此操作,您可以使用SignalR,根据将选择最佳通信协议(WebSocket,LongPolling)的浏览器版本,简化所使用的底层技术的所有麻烦。 .etc)。

SignalR后面,其中一个基础使用的技术是websockets,除了在服务器和客户端之间保持开放的全双工通道之外,它不会发送任何内容,以防服务器中的任何更新它将推送此更新到客户端。最受欢迎的网站使用websockets来保持服务器和客户端之间的开放渠道。

SignalR实际上使用了websockets但是它会降级为使用长轮询,例如旧浏览器不支持websocket的连接升级。

您可以选择直接使用websockets,以防您的客户使用新的浏览器。

最后一件事Stackoverflow作为一个庞大而重载的网站,一旦有新的答案或评论,就会使用websockets进行更新。

答案 1 :(得分:1)

这样做的一般方法是每隔一秒发送一次ajax请求,并要求服务器进行更新。

void linkedList::addNode2(node* nextloc, const string &e)
{
...
nextloc = head -> next;
v->next = nextloc;
...
}

它可能看起来像上面那样。请注意,它每秒都会执行一次请求,并将来自服务器的消息存储在<div> <pre id="status"> </pre> </div> setInterval(function () { $.ajax("/getUpdate?someParam=1234").then(function (result) { // result is whatever JSON object you send from the server $("#status").innerText = result.someProp; }); }, 1000); 元素中。