Javascript jQuery post和.NET MVC操作-将部分结果返回给最终用户

Javascript jQuery post和.NET MVC操作-将部分结果返回给最终用户,javascript,jquery,asp.net,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个关于一个我以前没有机会遇到的概念的问题,但我已经思考了很长时间,我想看看在.NETMVC5中使用jQuery是否可行 假设控制器中有一个动作,如下所示: [ActionName("OurTestAction")] [HttpPost] public ActionResult OurTestAction() { Method1(); //returning some sort of "signal" here to client side to notify that the metho

我有一个关于一个我以前没有机会遇到的概念的问题,但我已经思考了很长时间,我想看看在.NETMVC5中使用jQuery是否可行

假设控制器中有一个动作,如下所示:

[ActionName("OurTestAction")]
[HttpPost]
public ActionResult OurTestAction()
{
 Method1();
//returning some sort of "signal" here to client side to notify that the method1 finished processing data.. ?
 Method2();
 Method3();
 return Json("Ok");
}
触发动作的方式如下:

$(document).ready(function(){
$.post("/Controller/OurTestAction").done(function(response){
// displaying the result here
});
}):
因此,我对这段代码的想法是,我可以告诉最终用户Method1()何时被调用并结束了它的生命周期。一旦方法1();完成了它应该做的事情,我希望能够在他的浏览器中告诉最终用户类似这样的事情(通过jQuery):Method1()完成了数据处理,转到method2()

在jQuery和.NET中这样做可行吗?如果可行,如何实现


有人能帮我吗?

将控制器方法分解为不同的操作

控制器

[HttpPost]
public ActionResult Method1()
{
  Method1();
  return Json("Ok");
}



[HttpPost]
public ActionResult Method2()
{
  Method2();
  return Json("Ok");
}


[HttpPost]
public ActionResult Method3()
{
  Method3();
  return Json("Ok");
}
Javascript

$.ajax({
    type: 'POST',
    url: 'controller/method1'
}).done(function(resp) {
   //do stuff to notify users method 1 is complete
    $.ajax({
        type: 'POST', 
        url: 'controller/method2'
    }).done(function(resp2) {
        //do stuff to notify users method 2 is complete
    });
});

这并不像您在示例中所建议的那么简单,但它确实是可能的。请看一个名为SignalR的工具。其目的是维护web套接字连接,服务器端代码可以通过该连接将消息“推送”到客户端代码。有很多例子,从简单的消息通知到聊天系统。您不能通过一个post从控制器返回多个响应。一个可能的解决方案是将不同的方法移动到它们自己的控制器操作中,然后从JS代码中同步调用这些方法。另一种可能的方法是打开websocket连接并以这种方式返回您的响应,但这可能有点过头了false@Dilip你能给我举个例子吗?:)另外,FWIW,任何不接近瞬时的东西实际上都不应该被您的web应用程序处理。相反,您应该将其卸载到后台进程(甚至可能位于不同的服务器上)。然后,您可以使用WebSocket检查另一个进程中任务的进度。对用户来说,这一切看起来都是一样的,但这样一来,您就大大减少了web服务器死锁的可能性。