如何在ASP.NET中取消搜索过程



我目前正在做一个ASP.Net项目。我有一个搜索按钮,按下它后,就会连接到WCF,然后检索数据。我想添加一个"取消"按钮,并且我想在按下"取消"时取消搜索过程。问题是我不能中断回发,所以无论我做什么,我都不能在中途停止serach。我尝试通过调用以下命令从javascript刷新页面:location.reload(true);。但它不会起作用。它将等待回发完成,然后重新加载页面。我也尝试过在按下"取消"后中止WCF连接,但结果是一样的。有人能帮我吗?

好的,我们终于找到了答案。首先,我们发现,如果已经进行了回发,我们无法阻止它。我们可以取消搜索的唯一方法是在时间窗口内从WCF服务中提取数据(请注意,客户端发出数据请求,然后将请求转发到WCF服务,然后WCF服务从数据库中提取数据)。一旦WCF服务返回请求,就无法取消搜索过程(据我们所知)。我们还尝试在每次请求数据时创建新的线程/任务。问题是,当创建一个新的线程/任务时,与客户端的连接丢失,因为我们无法更新我们的组件(如gridview)。正如评论中所建议的,我们试图通过AJAX的调用来进行数据检索过程。AJAX调用的问题是,我们必须使用带有[WebMethod]标记的静态方法,这使得我们无法使用非静态成员。最后,解决方案是:1-我们将数据请求功能转移到客户端(javascript)2-我们使用了.asmx服务。这使得从javascript调用非静态函数成为可能这给了我们一个时间窗口,我们可以使用它来取消serach过程,从用户按下Search开始,直到WCF服务返回数据为止。最后,您可以使用JavsScript从客户端转到服务器端的Call非静态方法,了解如何使用.asmx服务。

最新更新