• ICallbackEventHandler:回调函数的实现(备忘)


    示例来自:ASP.NET 2.0编程珠玑

    服务器端:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    //继承ICallbackEventHandler,确保使用客户回调特性时,回调事件在会送过程中处理

    public partial class Chapter4_Demo4 : System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {

       //检查用户的浏览器是否支持回调特性
            if (!Request.Browser.SupportsCallback)
            {
                throw new ApplicationException("This browser doesn't support Client callbacks.");
            }

       //获取回调事件的引用

            string src = Page.ClientScript.GetCallbackEventReference(this, "arg", "ClientCallback", "ctx", "ClientErrorCallback", false);
            string mainSrc = @"function ValidateNumber(arg,ctx)
                                       { " + src + ";}";
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ValidateNumber", mainSrc, true);
        }

        private string _returnFormServer;

      //eventArgs表示客户端方法中的数据

        public void RaiseCallbackEvent(string eventArgs)
        {
            try
            {
                int value = Int32.Parse(eventArgs);

                if (value >= 1 && value <= 1000)
                {
                    this._returnFormServer = "You entered the number: " + eventArgs;
                }
                else
                {
                    this._returnFormServer = "Please enter a number between 1 and 1000";
                }
            }
            catch
            {
                throw new ApplicationException("You must enter a number.");
            }
        }

     //给客户端返回一个字符串,返回值作为一个参数传送给客户端的回调方法

        public string GetCallbackResult()
        {
            return this._returnFormServer;
        }
    }

    客户端:

    <html>
    <head runat="server">
        <title>Untitled Page</title>
        <script language=javascript>
            function Validate()
            {
                var n = document.forms[0].txtNumber.value;
                ValidateNumber(n,"txtNumber");
            }
           
            function ClientCallback(result,context)
            {
                alert(result);
                alert(context);
            }
           
            function ClientErrorCallback(error,context)
            {
                alert("The validation failed. " + error);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            Please enter a number between 1 and 1000:<br />
            <input id="txtNumber" name="txtNumber" type=text />
            <button id="btnValidate" onclick="Validate()">Validate</button>
        </div>
        </form>
    </body>
    </html>

    作者:冰碟
    出处:http://www.cnblogs.com/icebutterfly/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    JS算法练习一
    jquery抖动的按钮
    CSS3教程:box-sizing属性的理解border、padding与容器宽度的关系
    鼠标hover事件
    object 插入元素,插入HTML页面
    点击展开点击收起
    IE支持CSS3圆角
    登录事件,鼠标点击输入框隐藏默认值事件
    复制 动态文本按钮
    凯撒密码、GDP格式化输出、99乘法表
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/1395057.html
Copyright © 2020-2023  润新知