Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 执行大型操作时向视图发送更新的策略_Asp.net_.net_Asp.net Mvc 3_View - Fatal编程技术网

Asp.net 执行大型操作时向视图发送更新的策略

Asp.net 执行大型操作时向视图发送更新的策略,asp.net,.net,asp.net-mvc-3,view,Asp.net,.net,Asp.net Mvc 3,View,对于你们中的许多人来说,这可能是一个非常简单的方法——但我一直在试图找出一种在服务器执行耗时操作时向视图呈现更新的策略 事实就是这样。我有一个视图,它有一个按钮,上面写着“批准”。此批准需要调用某种操作或后台进程来执行可能需要20-30秒的繁重操作 在此期间,我想用某种处理gif动画更新视图,并附加文本,如“执行操作A”、“执行操作B”等 实现这一目标的最佳策略是什么?我必须承认,我没有尝试过,但我愿意这样做 我认为这可能是一个很好的尝试。虽然这在理论上听起来不错,但我会将其作为后台操作,然后在

对于你们中的许多人来说,这可能是一个非常简单的方法——但我一直在试图找出一种在服务器执行耗时操作时向视图呈现更新的策略

事实就是这样。我有一个视图,它有一个按钮,上面写着“批准”。此批准需要调用某种操作或后台进程来执行可能需要20-30秒的繁重操作

在此期间,我想用某种处理gif动画更新视图,并附加文本,如“执行操作A”、“执行操作B”等


实现这一目标的最佳策略是什么?

我必须承认,我没有尝试过,但我愿意这样做


我认为这可能是一个很好的尝试。

虽然这在理论上听起来不错,但我会将其作为后台操作,然后在任务完成时通过电子邮件或短信向用户发送通知

否则你需要

  • 在服务器上设置缓存(不是asp.net缓存),以存储长时间运行的进程的当前状态
  • 设置js计时器以轮询服务器
  • 使用缓存中存储的当前状态更新ui

这不是不可能的,但是有很多活动部件。

这里有一个你可能不喜欢的答案:甚至不用麻烦从服务器上获取一些“进度更新”

从商业角度来看这项任务。提供一些反馈的目的是给用户一些温暖和模糊的感觉,即他们没有被忘记,他们要求计算机完成的任务没有被放弃。您愿意花费多少成本来提供此功能

最简单的设备是简易的进度条。尽管大多数体验用户不相信它会告诉他们任务何时完成,但他们仍然相信,如果它正在移动某些东西

我的解决方案是向服务器发布一个异步操作来启动该操作。然后显示完全由javascript管理的进度条。它开始的速度很快,但随着它的发展,速度会变慢,以至于它永远不会真正完成,但似乎正在取得一些进展。异步操作完成后,将进度条短暂显示为已完成,然后将其删除


其他解决方案的成本要大得多,但这种方法的好处几乎是可以忽略的,如果不是实际的负面影响,毕竟它们实施起来很复杂,更容易出错。

我同意。获得这种反馈的价值小于成本。最后,我可能会使用Ajax.ActionLink特性启动程序,并在处理过程中显示某种动画。然后最后用一条消息“操作完成”或其他内容覆盖一个部分:)电子邮件或短信,操作需要30秒?请这样做。期待听到你的解决方案:)就像我在Anthonys post上评论的那样-这可能太复杂了,我不打算这么做-但是-嘿-让我们继续讨论,看看是否有杰出的人对此有杰出的解决方案。