请在ASP.NET MVC中等待页面

时间:2008-10-20 09:04:47

标签: asp.net-mvc webforms

页面执行许多任务并需要很长时间才能处理。我们希望在每项任务完成后向用户提供反馈。

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

您在ASP.NET MVC中以何种方式处理此问题?

5 个答案:

答案 0 :(得分:5)

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

this.PartialView("Progress").ExecuteResult(this.ControllerContext);
this.Response.Flush();
在控制器的操作方法中执行冗长操作时,从控制器

这取决于你选择这个或客户端方法,如这里的评论所述,只是想指出服务器端仍然可能。

答案 1 :(得分:2)

我建议使用AJAX来显示进度。请参阅相关链接:

答案 2 :(得分:2)

有两种基本方法:

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

我个人认为我会考虑两种选择:

  • 重定向到等待页面,然后触发操作
  • 做ajax风格