周公_asp.net 回调技术

台后类必须实现 ICallbackEventHandler 接口.

它提供两个类,一个是事件触发,一个是返回结果,

然后往前台页面注册一个 javaScript 函数.然后由这个函数来触发后台方法.

需要交互的时候调用这个自动注册的 javaScript 函数即可.

本质上还是用的 Ajax 技术,然后页面会返回一个 WebResource.axd 文件,这也是一个文本文件,里面封装了一些 Javascript 代码.实现 xmlHttpReuqest 的方法.

 

 

前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
        <script language="javascript">
        //客户端执行的方法
        //下面的方法是接收并处理服务器方法执行的返回结果
        function Success(args, context)
        {
            message.innerText  = args;
        }
        //下面的方式是当接收服务器方法处理的结果发生异常时调用的方法
        function Error(args, context)
        {
            message.innerText  = '发生了异常';
        }

        function form_submit() {
            var aa = document.getElementById("txtUserName").value;
            CallServerMethod(aa, null)
        }
       
        </script>    
   
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="text" id="txtUserName" runat="server" />
        <input type="text" id="txt1" runat="server" />
        <input type="button" id="btnSubmit" runat="server" value="提交" οnclick="form_submit()" />
        <div id="message"></div>
    </div>
    </form>
</body>
</html>

 

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

 后台:

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

public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
{
    string result = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            string reference= this.ClientScript.GetCallbackEventReference(this, "args", "Success", "context", "Error", true);

 

            //此时 reference=WebForm_DoCallback('__Page',args,Success,context,Error,true)


            string clientMethod =" function CallServerMethod(args,context){ /n"+reference +"/n }";
            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServerMethod", clientMethod,true);
        }
    }

    #region ICallbackEventHandler 成员

    string ICallbackEventHandler.GetCallbackResult()
    {
        return result;
    }

    void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
    {
        if (eventArgument.ToLower().IndexOf("admin") != -1)
        {
            result = eventArgument + "不能作为用户名注册。";
        }
        else
        {
            result = eventArgument + "可以注册。";
        }
    }

    #endregion
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值