一个页面执行许多任务并且需要很长时间来处理。我们希望在每个任务完成时给用户反馈。
在我们使用的 ASP.NET 网络表单中Response.Flush()
你会在 ASP.NET MVC 中采用什么方法?
一个页面执行许多任务并且需要很长时间来处理。我们希望在每个任务完成时给用户反馈。
在我们使用的 ASP.NET 网络表单中Response.Flush()
你会在 ASP.NET MVC 中采用什么方法?
你仍然可以使用 Response.Write() 和 Response.Flush() 来处理你想要发送的任何状态。或者,如果您在用户控件中有进度,您可以执行以下操作:
this.PartialView("Progress").ExecuteResult(this.ControllerContext);
this.Response.Flush();
在控制器的操作方法中执行冗长的操作时,从您的控制器中获取。
您可以选择此方法或此处评论中提到的客户端方法,只是想指出服务器端仍然是可能的。
我建议使用 AJAX 来显示进度。见链接的想法:
有两种基本方法:
轮询返回状态的服务器页面,然后在操作完成后重定向到结果页面。MVC 与这种方式无关,您需要使用服务器变量来存储对象/状态 - 这是一种与标准 Asp.NET 应用程序更相关的方式,因为您(可能)使用会话变量等。反正。
从客户端到服务器上的 Web 服务的 AJAX 调用。Asp.NET MVC 将滚动 jQuery 框架,因此将其用于客户端调用和响应事件处理。这将更符合 MVC 的精神,它不/不应该使用会话状态等。
你可以在客户端制作它。在每个步骤中,您使用当前步骤设置一些会话变量。然后,您在控制器中执行另一个操作,称为“GetProgress”并为其分配视图和 URI。
在操作中,您将检查此会话并返回任务的当前进度。在客户端,创建一个计时器(即 setTimeOut),然后每隔特定时间(大约 1 秒)调用后面的控制器操作的 URI。这就对了。
就我个人而言,我会考虑两种选择: