WebRequestExecutor是 ASP.NET AJAX网络访问基础结构的***修改点。理论上,我们可以使用自定义的WebRequestExecutor来取代默认的 XMLHttpExecutor。我们要做的,其实只是开发一个继承于Sys.Net.WebRequestExecutor类。不过事实上,在实际使用中,Sys.Net.XMLHttpExecutor已经足够用了,真的要自定义,也只需继承这个类即可。就像接下去的例子一样。
可是,Sys.Net.XMLHttpExecutor作为一个父类来说,可以说相当的不友好。先不多说,我们开始吧。在这个例子中,我们将开发一个 TraceExecutor,如果使用了这个Executor,Request和Response的信息都会被打印在页面上,开发人员可以把这些内容作为一个参考。TraceExecutor非常简单,代码也很短。
一般情况下,在这个方法中,会初始化所有的“私有”变量。不过在这里,我们不需要。
然后,我们将覆盖XMLHttpExecutor的executeRequest方法,我们需要作的,就是将WebRequest对象打印在页面上。代码如下:
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");
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
我在这里使用Debug模式下,为方法起了一个“别名”,在prototype中需要使用一下。自然,我们也需要调用registerClass,表示类的继承关系。代码如下:
Jeffz.Net.TraceExecutor.prototype =
{
executeRequest : Jeffz$Net$TraceExecutor$executeRequest
}
Jeffz.Net.TraceExecutor.registerClass('Jeffz.Net.TraceExecutor',
Sys.Net.XMLHttpExecutor);
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
我们可以尝试着使用一下,代码很简单,将HTML和Javascript一并贴出了。代码如下:
<asp:ScriptManager runat="server" ID="ScriptManager1">
<Scripts>
<asp:ScriptReference Path="Debug.js" />
<asp:ScriptReference Path="TraceExecutor.js" />
</Scripts>
</asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnRefresh" />
</Triggers>
<ContentTemplate>
<%= DateTime.Now.ToString("r") %>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button runat="server" ID="btnRefresh" Text="Refresh"/>
<script language="javascript">
Sys.Net.WebRequestManager.set_defaultExecutorType("Jeffz.Net.TraceExecutor");
</script>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
以上介绍ASP.NET中的WebRequestExecutor
【编辑推荐】