• 使用ICallbackEventHandler接口更高效实现Ajax


     使用ICallbackEventHandler接口可以方便地高效地实现Ajax功能

    1、处理页面需实现ICallbackEventHandler接口,此接口有两个方法

          a、GetCallbackResult  此方法返回处理结果给客户端,请求完成后自动调用

          b、RaiseCallbackEvent此方法是从客户端获取数据 由参数eventArgument 接收,并进行相关处理得出结果

    2、注册回调和主调脚本

          a、注册回调函数  string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");

                注册一个对于回调函数的引用,用于获取返回结果,并进行业务逻辑处理,注册的函数名和客户端书写的函数名需相同才能引用

          b、注册主调函数,主调函数,像服务器发送请求 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);

          c、客户端脚本:一个回调函数fucntion SendData(arg,context){alert(arg);}

               直接调用CallServer函数发送请求

    /// <summary>
        /// 实现ICallbackEventHandler接口,完成Ajax更快的功能
        /// </summary>
        public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
        {
            private string returnValue = string.Empty;
            protected void Page_Load(object sender, EventArgs e)
            {
                //注册回调脚本、具体实现自己写,此脚本中接收返回结果
                string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");
                //注册处理脚本
                string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);
            }
    
            #region ICallbackEventHandler 成员
    
            /// <summary>
            /// 返回结果
            /// </summary>
            /// <returns></returns>
            public string GetCallbackResult()
            {
                if (string.IsNullOrEmpty(returnValue))
                    return (returnValue = "-1");
                return returnValue;
            }
    
            /// <summary>
            /// 触发RaiseCallbackEvent事件获取客户端数据,然后进行处理
            /// </summary>
            /// <param name="eventArgument"></param>
            public void RaiseCallbackEvent(string eventArgument)
            {
                returnValue = eventArgument;
            }
    
            #endregion
        }
    客户端脚本代码:
    <script type="text/javascript">
    
        //接收回调结果,此函数在处理服务器完成后自动回调,即为回调函数,相当Ajax中的回调函数
        function SendData(arg) {
            alert(arg);
        }
    
        //客户端逻辑函数
        function GetReturnValue() {
            var arg = "Hello CallbackEventHandler!";
            //调用页面加载完成后注册的脚本,传递参数'arg'由服务器进行处理,第二个参数'context'不用传递
            CallServer(arg,"");
        }
    </script>
    <input type="button" value="CallbackMe" id="btn" onclick="GetReturnValue()" />
    Newd

    版权声明

    作者:扶我起来我还要敲

    地址:https://www.cnblogs.com/Newd/p/4765815.html

    © Newd 尊重知识产权,引用请注出处

    广告位

    (虚位以待,如有需要请私信)

  • 相关阅读:
    SQL Server数据库中批量替换数据的方法
    js 鼠标移上去弹出层效果
    50个jQuery代码段帮你成为更好的JavaScript开发者
    MSN、腾讯QQ、SKYPE、阿里旺旺网页在线客服源代码
    正则表达式基础知识
    常用邮箱POP3和SMTP服务器汇总
    CS5序列号
    如何使用Oracle SQLDeveloper 中连接MS SQLServer和MySQL数据库
    Silverlight与后台数据库的三种技术实现基本的互操作(转)
    ADO 与ADO.NET
  • 原文地址:https://www.cnblogs.com/Newd/p/4765815.html
Copyright © 2020-2023  润新知