5

一个页面执行许多任务并且需要很长时间来处理。我们希望在每个任务完成时给用户反馈。

在我们使用的 ASP.NET 网络表单中Response.Flush()

你会在 ASP.NET MVC 中采用什么方法?

4

5 回答 5

5

你仍然可以使用 Response.Write() 和 Response.Flush() 来处理你想要发送的任何状态。或者,如果您在用户控件中有进度,您可以执行以下操作:

this.PartialView("Progress").ExecuteResult(this.ControllerContext);
this.Response.Flush();

在控制器的操作方法中执行冗长的操作时,从您的控制器中获取。

您可以选择此方法或此处评论中提到的客户端方法,只是想指出服务器端仍然是可能的。

于 2008-10-20T09:36:25.490 回答
2

我建议使用 AJAX 来显示进度。见链接的想法:

于 2008-10-20T09:29:07.613 回答
2

有两种基本方法:

  1. 轮询返回状态的服务器页面,然后在操作完成后重定向到结果页面。MVC 与这种方式无关,您需要使用服务器变量来存储对象/状态 - 这是一种与标准 Asp.NET 应用程序更相关的方式,因为您(可能)使用会话变量等。反正。

  2. 从客户端到服务器上的 Web 服务的 AJAX 调用。Asp.NET MVC 将滚动 jQuery 框架,因此将其用于客户端调用和响应事件处理。这将更符合 MVC 的精神,它不/不应该使用会话状态等。

于 2008-10-20T09:38:32.913 回答
1

你可以在客户端制作它。在每个步骤中,您使用当前步骤设置一些会话变量。然后,您在控制器中执行另一个操作,称为“GetProgress”并为其分配视图和 URI。

在操作中,您将检查此会话并返回任务的当前进度。在客户端,创建一个计时器(即 setTimeOut),然后每隔特定时间(大约 1 秒)调用后面的控制器操作的 URI。这就对了。

于 2008-10-20T09:21:56.783 回答
1

就我个人而言,我会考虑两种选择:

  • 重定向到等待页面,然后触发操作
  • 做ajax风格
于 2008-10-20T09:22:40.153 回答