【IT168技术文档】
WebRequestExecutor是 ASP.NET AJAX网络访问基础结构的唯一修改点。理论上,我们可以使用自定义的WebRequestExecutor来取代默认的 XMLHttpExecutor。我们要做的,其实只是开发一个继承于Sys.Net.WebRequestExecutor类。不过事实上,在实际使用中,Sys.Net.XMLHttpExecutor已经足够用了,真的要自定义,也只需继承这个类即可。就像接下去的例子一样。
可是,Sys.Net.XMLHttpExecutor作为一个父类来说,可以说相当的不友好。先不多说,我们开始吧。在这个例子中,我们将开发一个 TraceExecutor,如果使用了这个Executor,Request和Response的信息都会被打印在页面上,开发人员可以把这些内容作为一个参考。TraceExecutor非常简单,代码也很短。
首先,是构造函数代码。如下:
一般情况下,在这个方法中,会初始化所有的“私有”变量。不过在这里,我们不需要。Jeffz.Net.TraceExecutor = function Jeffz$Net$TraceExecutor() { Jeffz.Net.TraceExecutor.initializeBase(this); }
然后,我们将覆盖XMLHttpExecutor的executeRequest方法,我们需要作的,就是将WebRequest对象打印在页面上。代码如下:
我在这里使用Debug模式下,为方法起了一个“别名”,在prototype中需要使用一下。自然,我们也需要调用registerClass,表示类的继承关系。代码如下:function Jeffz$Net$TraceExecutor$executeRequest() { debug.trace("<b>Request sent at " + new Date() + ":</b>"); debug.dump(this.get_webRequest(), "Request"); Jeffz.Net.TraceExecutor.callBaseMethod(this, "executeRequest"); }
Jeffz.Net.TraceExecutor.prototype = { executeRequest : Jeffz$Net$TraceExecutor$executeRequest } Jeffz.Net.TraceExecutor.registerClass('Jeffz.Net.TraceExecutor', Sys.Net.XMLHttpExecutor);