ASP.NET中的WebRequestExecutor
WebRequestExecutor是 ASP.NET AJAX網(wǎng)絡(luò)訪問基礎(chǔ)結(jié)構(gòu)的***修改點。理論上,我們可以使用自定義的WebRequestExecutor來取代默認的 XMLHttpExecutor。我們要做的,其實只是開發(fā)一個繼承于Sys.Net.WebRequestExecutor類。不過事實上,在實際使用中,Sys.Net.XMLHttpExecutor已經(jīng)足夠用了,真的要自定義,也只需繼承這個類即可。就像接下去的例子一樣。
可是,Sys.Net.XMLHttpExecutor作為一個父類來說,可以說相當(dāng)?shù)牟挥押谩O炔欢嗾f,我們開始吧。在這個例子中,我們將開發(fā)一個 TraceExecutor,如果使用了這個Executor,Request和Response的信息都會被打印在頁面上,開發(fā)人員可以把這些內(nèi)容作為一個參考。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中需要使用一下。自然,我們也需要調(diào)用registerClass,表示類的繼承關(guān)系。代碼如下:
- 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
【編輯推薦】