本文标签:WebRequestExecutor ASP.NET
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"); }
我在这里使用Debug模式下,为方法起了一个“别名”,在prototype中需要使用一下 。自然,我们也需要调用registerClass,表示类的继承关系 。代码如下: - Jeffz.Net.TraceExecutor.prototype =
- {
- executeRequest : Jeffz$Net$TraceExecutor$executeRequest
- }
- Jeffz.Net.TraceExecutor.registerClass(Jeffz.Net.TraceExecutor,
Sys.Net.XMLHttpExecutor);
我们可以尝试着使用一下,代码很简单,将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>
以上介绍ASP.NET中的WebRequestExecutor
|