自己实现的一个Script Callback

昨天网上一位朋友推荐我看了一篇文章《Remote Scripting in .NET》,这篇文章的作者利用了Microsoft Remote Scripting技术,在服务器端进行了一些封装,方便了在ASP.NET中的页面上调用直接调用服务器端方法。

说起来我以前对Microsoft Remote Scripting还是挺陌生的,MRS的原理是利用了内置的一个Java Applet,通过一些高层的封装,使页面上使用Script能够直接调用服务器上公开的方法。感兴趣的朋友可以看看MSDN上的文档,用起来还算是方便,特别是配合前面那篇文章作者做的那个封装的.NET组件

不过我个人对Applet并不是很感冒,特别是在我家里的那台没有安装JRE的WinXP SP2RC2的机器上更是根本没法用...

其实我最喜欢的还是ASP.NET 2.0中的Script Callback那样的实现方式,简单、明了,于是想到,既然它也是底下使用XMLHTTP来实现的,那不如我自己在ASP.NET 1.1下面也照样用XMLHTTP实现一个好了。花费了一阵功夫,大功告成。大部分都是仿造的ASP.NET 2.0中的实现方式,但是部分地方还是不能做到完全一样,因为对于实现ICallbackEventHandler接口的控件的处理,我没法直接写到Page类或更里面的地方,所以需要在页面里面创建一个ScriptCallbackManager的控件。

服务器端的进行步骤:
1、让页面上的某个控件实现ICallbackEventHandler接口,我个人喜欢就让Page类直接实现;
2、在实现了ICallbackEventHandler接口的控件上实
现RaiseCallbackEvent方法,来处理客户端的请求;
3、在页面中加入一个ScriptCallbackManager控件,在构造函数中指明实现了ICallbackEventHandler接口的控件,和调用完成后执行客户端的Script函数名。

public class WebForm1 : System.Web.UI.Page, ICallbackEventHandler
{
    private void Page_Load(object sender, System.EventArgs e)
    {
        this.Controls.Add(new ScriptCallbackManager(this, "handleResultFromServer"));
    }

    public String RaiseCallbackEvent(String eventArgument)
    {
        return "You sent " + eventArgument + " !";
    }


页面上的进行步骤:
1、在需要调用服务器方法的地方直接调用内置的scriptCallback()函数,第一个参数指定了要传递到服务器端的变量,第二个参数指定了此次请求的上下文;
2、编写一个在完成调用之后自动执行的函数,这个函数的名称需要和服务器端ScriptCallbackManager控件的构造函数中指定的函数名称相同。

function callBack()
{
    var param = document.all.txtRequest.value;
    var context = "";
   
    scriptCallback(param, context);
}

function handleResultFromServer(result, context)
{
    alert(result);
}


在callBack()方法中调用了系统内置的一个Script函数scriptCallBack(),这个函数会自动调用服务器方法,并将第一个参数的值传给服务器端的RaiseCallbackEvent()方法的参数。handleResultFromServer是在调用完成后自动执行的函数。

感兴趣的朋友可以在这里下载到这个Script Callback实现的项目源码。

你可能感兴趣的:(callback)