首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.net OnClientClick有一个异步调用-只有当异步调用完成并成功时,如何才能继续服务器端OnClick?

在ASP.net中,可以使用AJAX来实现异步调用。当OnClientClick有一个异步调用时,可以通过以下步骤来实现只有当异步调用完成并成功时才能继续服务器端OnClick:

  1. 在前端页面中,使用JavaScript编写异步调用的逻辑。可以使用XMLHttpRequest对象或者jQuery的AJAX方法来发送异步请求。在异步请求的回调函数中,可以根据返回的结果来判断异步调用是否成功。
  2. 在异步请求的回调函数中,如果异步调用成功,可以通过JavaScript的方式触发服务器端OnClick事件。可以使用doPostBack方法来实现触发服务器端事件。doPostBack方法接受两个参数,第一个参数是触发事件的源控件的唯一标识,第二个参数是要传递给服务器端的参数。
  3. 在服务器端,可以通过重写Page的RaisePostBackEvent方法来处理OnClick事件。在RaisePostBackEvent方法中,可以根据传递的参数来执行相应的逻辑。

以下是一个示例代码:

前端页面代码:

代码语言:html
复制
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="doAsyncCall(); return false;" />
<script>
    function doAsyncCall() {
        // 发送异步请求
        $.ajax({
            url: '异步请求的URL',
            type: 'POST',
            data: { 参数 },
            success: function (response) {
                // 异步调用成功,触发服务器端OnClick事件
                __doPostBack('<%= btnSubmit.UniqueID %>', '');
            },
            error: function () {
                // 异步调用失败
            }
        });
    }
</script>

服务器端代码:

代码语言:csharp
复制
protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
    if (sourceControl == btnSubmit)
    {
        // 处理OnClick事件的逻辑
    }
    base.RaisePostBackEvent(sourceControl, eventArgument);
}

在这个示例中,当点击按钮时,会先执行doAsyncCall函数发送异步请求。如果异步请求成功,会触发服务器端OnClick事件的处理逻辑。注意,需要将btnSubmit按钮的OnClientClick属性设置为"doAsyncCall(); return false;",以阻止默认的同步PostBack行为。

推荐的腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)和腾讯云云函数(https://cloud.tencent.com/product/scf)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

PS:当某个页面第一次被访问的时候,CLR就会使用一个代码生成器去解析aspx文件生成源代码编译,然后以后的访问就直接调用编译后的dll,这也是为什么aspx第一次访问的时候非常慢的原因。  ...②下图则展示了对页面后置代码类所在的程序集进行反编译的情况:   第三步:我们在刚刚就说了,服务器端对aspx处理的过程是一个渲染生成html的过程,如何来深入理解这句话,我们可以在此借助反编译工具来一探究竟...属性   ①在WebForm中,Button控件两个Click事件:一个OnClick的服务端事件,另一个OnClientClick的客户端事件;OnClick事件写在后置代码类中,每次点击Button...首先会触发OnClientClick事件(OnClientClick会返回一个bool值,为true则继续执行OnClick,为false则不继续)。   ...例如:有的代码只会在页面第一次加载才执行(比如从数据库中读取数据显示),这时就应该使用IsPostBack进行判断。 if (!

2.8K42
  • 零基础AJAX入门(含Demo演示源文件)

    注:在某些场合“ASP.NET客户端回调”也被称为“ASP.NET脚本回调(ASP.NET script callbacks)” 通过XmlHttpRequest进行异步通讯要在客户端通过JavaScript...承接,第三个参数是客户端在服务器端完成回调后接收服务器端发来的数据并进行处理的JavaScrpipt函数。...服务器端RaiseCallbackEvent收到数据调用相关服务器端函数进行处理赋值给一个全局字符串变量 4.由GetCallbackResult函数将服务器准备好的字符串数据返回到客户端 5.客户端由...通过ScriptManager控件注册WebServices方法可以实现在客户端对服务器端函数进行调用生成客户端代码,调用格式和客户端回调类似。...JavaScript主要处理的事情有: 1.客户端发起异步请求(上一节已经提到) 2.接收来自服务器端异步发来的数据完成解码(下一章将提到) 3.操作页面元素(基于DOM模型),负责数据在客户端的计算和呈现

    1.1K20

    AJAX控件UpdatePanel使用详解

    UpdatePanel控件概述 UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本...UpdatePanel重要的属性如下: 属性 说明 ChildrenAsTriggers 当UpdateMode属性为Conditional,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle...当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。...Template,去实现位于System.Web.UI命名空间下的接口ITemplate。...UpdatePanel的异步更新触发器,它需要设置的属性控件ID和服务端控件的事件;PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送

    1.1K20

    C 异步调用

    ASP.NET服务器端异步Web方法 摘要:Matt Powell 介绍了如何服务器端使用异步 Web 方法,来创建高性能的 Microsoft ASP.NET Web 服务。...然后,当较长的后台进程完成,我们调用一个回调函数,结束对请求的处理,通过某种方式通知 ASP.NET 请求已完成。实际上,这种功能可由 ASP.NET 使用异步 Web 方法提供。...如果客户端支持异步 Web 服务调用,则可以为客户端计算机释放占用的线程;如果服务器端支持异步 Web 服务调用,则可以释放服务器计算机上占用的线程。但这里两个关键的区别。...简单的异步 Web 方法   为举例说明异步 Web 方法,我从一个名为 LengthyProcedure 的简单同步 Web 方法开始,其代码如下所示。然后我们再看一看如何异步完成相同的任务。...对 UserInfoQuery 的调用异步执行,被传递到 AsyncCallback 函数,后者被传递到 BeginGetAge 方法。这将导致当后端请求完成调用内部回调函数。

    1.3K10

    前端基础-Ajax对象

    var btu = document.getElementById('btu'); btu.onclick = function(){ //封装进函数供其他程序调用...= function(){ //函数调用 alert(cXHR()); } 顺便封装一个方法: 使用id属性获取DOM对象,方便后面使用 function...**4:接收完成,客户端已经接收到了所有数据 * ** status :http响应状态码 200代表成功获取服务器端数据 404未找到页面等等…… statusText :http...此参数为null; 如果是post请求,此参数就是要传递的数据 注意: 所有相关的事件绑定必须在调用send()方法之前进行. 2.2.3 同步与异步 例如,小明去餐馆排队点餐,前台服务员将小明的菜单告诉厨师进行制作...,此时小明后面排队的人就一直等着, 直到厨师制作完成,把饭菜送到小明手里后离开,后面的人才能继续点餐;这就是同步处理 但是,如果前台服务员将小明的菜单告诉厨师后,服务员发给小明一个好牌去旁边等待,后面的人继续点餐

    77610

    10个小技巧助您写出高性能的ASP.NET Core代码

    避免任何层的同步调用 在开发ASP.NET Core应用程序时,尽量避免创建阻塞的调用。阻塞调用是指当前请求未完成之前会一直阻止下一个执行的调用。...您应该在代码中使用端到端异步编程。 让我们举一个例子;我们一个ASP.NET CoreMVC应用程序,中间一些数据库的操作。...TASK.WAIT或TAST.RESULT 在使用异步编程,我建议您避免使用Task.Wait和Task.Result尝试使用WAIT,原因如下: 它们阻塞线程直到任务完成等待任务完成。...如果您试图以同步的方式完成它,那么它会阻塞主线程停止其他后台执行,直到I/O完成为止。因此,从提升性能上来说,您在对I/O进行操作应该始终进行异步执行。...我们很多异步方法可用于I/O操作,如ReadAsync、WriteAsync、FlushAysnc等。下面是一个简单的例子,说明我们如何异步创建一个文件的副本。

    4.5K31

    ASP.NET 调味品:AJAX

    (在此情况下,没有参数),以便在完成执行传递响应。...在此,我们看到 AJAX 在工作异步特性,因为对 GetMessageOfTheDay 的调用不阻碍执行其他 JavaScript 代码,也不阻碍用户继续在页上进行操作。...完成服务器端处理,Ajax.NET 调用指定的回调函数 GetMessageOfTheDay_CallBack,并向其传递由服务器端返回值组成的响应。...就我个人而言(作为基于服务器端变量创建了 JavaScript 数组并将它们链接在一起的开发人员),我还要一段时间才能相信它真的起作用了。 一个可能不太明显的主要问题。...一般来说,这意味着我们将在稍后一段时间内一直调用服务器端方法,显示结果。在加载页面仅发生第一次调用,每隔 X 秒发生后续调用

    3.7K50

    Async,Await和ConfigureAwait的关系

    当您使用async/await处理该线程,让其他线程使用它。代码的作用类似于“同步”,因为您可以在await之后以本方法继续执行代码。...发生的情况是主线程将调用async方法,最终会阻塞这个线程,直到那个async方法完成。然而,一旦异步方法完成,它必须等待原始调用完成才能继续。他们都在等待对方完成,而且永远不会。...如果一个同步调用一路向下,遇到一个没有configurewait(false)的任务,那么这个任务将尝试等待顶部的原始线程完成,然后才能继续。...每个async/ await调用最终都将创建一个小状态机来跟踪所有信息。虽然这个开销很小,但是如果滥用async/ await,则会导致速度变慢。只有当线程不得不等待结果,才应该等待它。...但是,当您使用它调用者实际上不会等待该任务完成才能恢复自己。它实际上是一种即发即忘的东西。两种情况你想要使用它。 第一种情况是事件处理程序,如WPF或WinForms中的按钮单击。

    69910

    ASP.NET 2.0 中的异步

    页处理从线程池线程开始,但是当一个异步 I/O 操作开始响应 ASP.NET 的信号之后,该线程返回线程池。当该操作完成ASP.NET 从线程池提取另一个线程,完成该请求的处理。...Begin 启动一个异步 I/O 操作,当该操作完成ASP.NET 从线程池提取另一个线程调用 End 方法,并且在该线程上执行该页生命周期的其余部分。 ?...异步数据绑定 通常情况下,ASP.NET 页并不使用 HttpWebRequest 直接请求其他页,但它们通常查询数据库对结果进行数据绑定。因此,您将如何使用异步页执行异步数据绑定呢?...异步任务 MethodAsync 是从异步页进行多个异步 Web 服务调用延迟呈现阶段直到所有调用完成一个简便方法。...如果生成一个进行一个异步调用异步页,您可以使用 AddOnPreRenderCompleteAsync 或 RegisterAsyncTask。

    1.9K90

    C#并发编程之异步编程(二)

    异步方法只有在等待的任务完成后,才能通过该位置继续执行剩下的逻辑,控制权也在此处返回给异步方法的调用方。...该任务将调用GetStringAsync正在进行的进程,在调用完成产生返回字符串给urlcontent。...该任务继续调用同步方法 DoIndependentWork。 DoIndependentWork 作为一个同步方法,在自身工作完成后返回到调用方。...AccessTheWebAsync 将 Task返回给调用方。该任务将计算下载字符串长度。 GetStringAsync 完成生成一个字符串结果。...只有当方法处于活动状态,该方法将在当前同步上下文中运行使用线程上的时间。可以使用Task.Run将占用大量CPU的工作移到后台线程,但是后台线程不会帮助正在等待结果的进程变为可用状态。

    1.2K20

    ASP.NET Core 基础知识】--前端开发--使用ASP.NET Core和JavaScript进行通信

    回调函数:在AJAX操作完成后,通常会调用一个回调函数来处理从服务器返回的数据。这使得我们可以根据需要更新页面的内容,例如更新DOM元素或执行其他操作。...当页面加载完成,JavaScript代码将向/api/user发送一个GET请求,获取用户信息。成功获取到数据后,我们将用户信息显示在页面上的userInfo div中。...当用户点击发送按钮,我们使用invoke方法调用服务器端的SendMessage方法,并将用户输入的消息发送到服务器端。...在前端调用API 以下是一个简单的HTML页面,演示了如何在前端调用我们创建的RESTful API: <!...通过以上步骤,您已经成功创建了一个基于ASP.NET Core的RESTful API,并在前端调用它来获取资源信息。

    22600

    《大型网站技术架构》读书笔记之五:万无一失之网站的高可用架构

    (1)如何度量网站可用性?   一个神奇的数字—9!你几个9,就代表了你的可用性。...,本质是一个HTML中的隐藏域,回调时会将这个隐藏域中的数据提交到服务器端。     ...但是,该方案适合集群规模较小的情况下。当规模较大,大量的Session复制操作会占用服务器和网络的大量资源,系统不堪重负。 ?   ...,应用程序则根据服务调度策略选择重试or请求转移到其他服务器上;   ③异步调用:通过消息队列等异步方式完成,避免一个服务失败导致整个应用请求失败的情况。...PS:不是所有服务都可以异步调用,对于获取用户信息这类调用,采用异步方式会延长响应时间,得不偿失。对于那些必须确认服务调用成功才能继续进行下一步的操作的应用也不适合异步调用

    48840

    AJAX

    GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求不应在处理敏感数据使用 GET 请求长度限制 由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大 GET...          同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干任何事         当前只能做一件事,其他事情必须等当前的事情完成才能继续后面的事情。...调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。    2 - (载入完成/数据接收)    此阶段接收服务器端的响应数据。...值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据 //ajax的常用status 1**:请求收到,继续处理 2**:操作成功收到,分析、接受 3**:完成此请求必须进一步处理...4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败 100——客户必须继续发出请求 101——客户要求服务器根据请求转换HTTP协议版本 200——交易成功 201——提示知道新文件的

    55440

    JeffreyZhao]正确使用异步操作

    多线程编程的一个重要特点就是能够充分利用CPU的运算能力,更快地完成某个任务。很明显,如果一个非常庞大的计算任务交由一个线程来完成,那么只能让一个CPU参与运算。...原来现在的做法还是相当不科学:服务员知道客人需要的食品之后,就将原料塞入机器,看着机器是如何将原料变为美味的。当机器的工作完成之后,服务员便将食品打包送出,然后继续招待别的客人。...如果我们能够在数据库进行长时间查询操作,让线程去处理其他的请求(招待其他客人)。这样,我们只需要在数据库操作完成之后继续处理(打包)并将数据发送给客户端(送出)即可。   ...调用BeginRead/BeginWrite时会发起一个异步操作,但是只有在创建FileStream传入FileOptions.Asynchronous参数才能获取真正的IOCP支持,否则BeginXXX...至于正确的做法,网络上已经不少文章讲述了如何ASP.NET中正确使用异步操作,大家可以搜索相应的资料来看,我也会在以后的文章中略有提到。   关于异步操作,这次就讲到这里吧。

    695100

    Asp.net_Study学习笔记

    代码中对session的处理,只有当httphandle实现IRequiresSessionState接口,这是标记接口,asp.net引擎才会处理session。...')” Text=“删除”/>服务器端OnClick。 linkButton, 用法和Button差不多,区 别就是Button控件渲染为按钮,而LinkButton.渣染为超链接。...一般而言,http协议一次性连接的特点,每次连接只能处理一个请求,下一个请求需要再次建立连接才能处理。...过期的时候才会调用Session_End) Application_BeginRequest:当一个请求过来的时候html等静态文件是iis直接把文件给到浏览器,不经过asp.net引擎的处理。...所以不会调用Application_BeginRequest方法;即使访问不存在的页面也会被调用(用法:可以判断客户端输入的网址,然后转到另一个网址) Application_Error:程序中发生未处理异常

    22110

    从编程小白到全栈开发:理解异步

    前者的过程就是“同步”,而后者则是“异步”了。 所以,在同步处理情况下:在开始做一件事情之后,当前事情就会阻止其他事情的进展,只有当这件事情完成才能继续其他事情: ?...而借助AJAX,我们可以做到服务器端请求页面中想要变动部分的少量数据,然后再把返回的数据更新到页面的那个部分去就行了。 但是AJAX解决的问题不只在于“局部刷新”,而是在于“异步”。...而AJAX采用了异步方式进行服务器端请求,请求发出后,其他部分还是继续该干嘛干嘛,不用等待,丝毫不受影响。...,多加了一个callback参数(这个参数名字你可以任意取),在调用这些函数,可以传入一个函数当做这个callback参数。...Promise对象中,当工作完成,可以选择使用resolve(代表成功)或reject(代表失败)函数来进行结束。

    66130

    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL

    如何使用文件上传控件 2. 异步控制器 1....当请求处理完成,该线程无法服务其他请求,worker 线程会被阻塞。现在我们来了解什么是线程饥饿,如果一个应用程序接收到很多请求,且处理每个请求都非常耗时。...在这种情况下,我们就必须指定一个点来结束请求,当新的请求进入状态,没有worker 线程可使用,这种现象称为线程饥饿。...异步操作可使用CLR 线程来继续执行。 存在的问题就是,CLR 线程无法返回响应,一旦它完成异步操作,它会通知Asp.net。...使用await关键字也可标记异步操作,能够保证异步操作完成才能继续执行下面的代码。 一旦异步操作在Action 方法中完成执行,必须执行worker线程。

    3.9K100

    ASP.NET AJAX UpdatePanel 控件实现剖析

    ASP.NET AJAX 简介 ASP.NET AJAX是微软在ASP.NET 2.0之上对AJAX技术的一个封装,为Web应用程序提供完整的AJAX解决方案。...ASP.NET AJAX两种编程模型:部分更新和远程服务。...而远程服务则是直接通过前端JavaScript来调用服务器端服务,前段获取数据后,进行页面更新,这就要求服务器端代码必须分解为特定于应用程序的服务,这是与传统的ASP.NET应用程序完全不同的体系结构...MicrosoftAjaxWebForm.js文件则是完全服务于ASP.NET AJAX页面局部更新这样一个功能的,在该文件中定义了一个客户端对象PageRequestManager,该对象将会负责客户端异步回送的全过程...这是如何实现的哪? 3. ASP.NET AJAX部分呈现剖析 3.1 先从客户端讲起 看一下上面的示例代码在客户端的HTML代码, 这里列出核心部分,其他全部隐去。

    6.8K100

    Msdn 杂志 asp.net ajax 文章汇集

    您可以编写一个在您的服务器上承载的 .asmx 文件,通过一个客户端 JavaScript 类调用该服务上方法. http://msdn.microsoft.com/msdnmag/issues/07...ScriptManager 将关联某一特定事件,当事件发生获得通知,根据环境配置多个设置;此过程将通过 ASP.NET 页面的呈现循环多次重复进行。...通过了解 ScriptManager 的内部结构,您会对该控件为 Web 应用程序开发提供的选项更深入的认识,了解如何从中获得最大好处。...loc=zh AJAX 应用程序体系结构,第 2 部分 使用 ASP.NET AJAX Extensions 将您的站点过渡到 AJAX 体验两个主要的编程模型可供选择:部分呈现和脚本服务...对 JavaScript 的依赖是由于受浏览器结构的限制,只有当浏览器可以支持功能更加强大的编程功能,这种情况才会改变。

    2.7K80
    领券