在执行异步操作时,我找不到显示“请等待”页面的方法;
我正在尝试实现的是一个搜索页面,它显示‘请等待’动画,而搜索操作是由异步线程完成的。
我正在粘贴我在下面实现的简单测试代码。即使调试器遍历该行,初始的“搜索”视图也不会显示。我只能在操作完成后看到最终的“结果”视图;
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");
}
}发布于 2009-12-23 00:10:23
实际上,您不需要异步调用,因为您希望等待过程结束。当您不想等待结果时,请使用异步方法。
所有你需要做的就是在你的页面上隐藏一个带有“搜索”文本的div。
$("#searching").show();
$(“表单”).submit();
当过程结束时,转到结果视图。
就这样。
如果仍要调用异步操作,请参阅:http://msdn.microsoft.com/en-us/library/ee728598(VS.100).aspx#performing_multiple_operations_in_parallel
发布于 2009-12-22 23:21:24
这是一个Web应用程序,你不能从服务器端到客户端这样做。你必须用ajax实现一些东西。我会给你做这件事的基础,如果你想要一个代码示例,让我知道。
1)底部的Search必须调用一个js函数,该函数会显示“请等待”消息。
2)相同的js函数必须调用执行搜索的服务器方法(使用ajax)。这里我推荐使用JQuery,它有一个叫做ajax的方法,使用起来非常简单。
3)在服务器方法中进行搜索,并以html、xml或json格式返回结果。
4)在js回调方法中,隐藏“请等待”消息,并显示搜索结果。
发布于 2009-12-23 00:15:01
异步方法在服务器上运行,而不是在客户端上运行。例如,如果要调用多个web服务来获取页面数据,则可以使用异步控制器。你可以对所有请求进行排队,它们将并行运行,一旦完成,asp.net将把它们组合在一起,完成页面的组装。
在您的场景中,您已经从一个完整的页面发出了部分请求,并且实际上不需要异步控制器。除非您通过测试发现您的请求正在排队,否则我会避免这种额外的复杂性。
https://stackoverflow.com/questions/1945817
复制相似问题