首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC期货异步操作

MVC期货异步操作
EN

Stack Overflow用户
提问于 2009-12-22 19:30:39
回答 3查看 322关注 0票数 0

在执行异步操作时,我找不到显示“请等待”页面的方法;

我正在尝试实现的是一个搜索页面,它显示‘请等待’动画,而搜索操作是由异步线程完成的。

我正在粘贴我在下面实现的简单测试代码。即使调试器遍历该行,初始的“搜索”视图也不会显示。我只能在操作完成后看到最终的“结果”视图;

代码语言:javascript
复制
 public class HomeController : AsyncController
 {    
        public ActionResult Search()
        {
            // Add an asynchronous operation
            AsyncManager.OutstandingOperations.Increment();
            ThreadPool.QueueUserWorkItem(o =>
            {
                Thread.Sleep(5000);
                AsyncManager.OutstandingOperations.Decrement();
            }, null);

            return View("Searching");
        }

        public ActionResult SearchCompleted() {

            return View("Results");
        }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-23 00:10:23

实际上,您不需要异步调用,因为您希望等待过程结束。当您不想等待结果时,请使用异步方法。

所有你需要做的就是在你的页面上隐藏一个带有“搜索”文本的div。

  1. 将搜索标记为POST操作并将表单发送到此操作
  2. 在页面发布时使用javascript显示“Search”div。

$("#searching").show();

$(“表单”).submit();

当过程结束时,转到结果视图。

就这样。

如果仍要调用异步操作,请参阅:http://msdn.microsoft.com/en-us/library/ee728598(VS.100).aspx#performing_multiple_operations_in_parallel

票数 0
EN

Stack Overflow用户

发布于 2009-12-22 23:21:24

这是一个Web应用程序,你不能从服务器端到客户端这样做。你必须用ajax实现一些东西。我会给你做这件事的基础,如果你想要一个代码示例,让我知道。

1)底部的Search必须调用一个js函数,该函数会显示“请等待”消息。

2)相同的js函数必须调用执行搜索的服务器方法(使用ajax)。这里我推荐使用JQuery,它有一个叫做ajax的方法,使用起来非常简单。

3)在服务器方法中进行搜索,并以html、xml或json格式返回结果。

4)在js回调方法中,隐藏“请等待”消息,并显示搜索结果。

票数 0
EN

Stack Overflow用户

发布于 2009-12-23 00:15:01

异步方法在服务器上运行,而不是在客户端上运行。例如,如果要调用多个web服务来获取页面数据,则可以使用异步控制器。你可以对所有请求进行排队,它们将并行运行,一旦完成,asp.net将把它们组合在一起,完成页面的组装。

在您的场景中,您已经从一个完整的页面发出了部分请求,并且实际上不需要异步控制器。除非您通过测试发现您的请求正在排队,否则我会避免这种额外的复杂性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1945817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档