原創(chuàng)|其它|編輯:郝浩|2009-12-25 10:45:09.000|閱讀 738 次
概述:本文希望為有一定基礎的Asp.net Ajax同學提供另外一個視角,進一步的分析了解Asp.net Ajax的運行機制。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本文希望為有一定基礎的Asp.net Ajax同學提供另外一個視角,進一步的分析了解Asp.net Ajax的運行機制。
首先,源代碼從何而來?
我是用的笨方法(如果大家有好辦法,一定給我留言喲!):
在vs2008中,
1. 建一個普通的aspx頁面,F(xiàn)5,然后ViewSource,查看源代碼;
2. 在頁面引入ScriptManager,F(xiàn)5,再查看源代碼;并保存該頁面。
3. 將兩份源代碼進行比較。
通過比較,我們發(fā)現(xiàn),引入了ScriptManager的頁面源代碼,多出了以下代碼:
__doPostBack函數(shù)
asp.net頁面機制的核心函數(shù),但與本系列主題關系不大,且網上資料極多,本系列暫時略過
一些好像js文件引用語法的代碼:
咦?這種代碼是什么意思?引用的*.axd文件,而且還有d=*,t=*的參數(shù)。
一些似乎是初始化(initialize)的代碼:
無論如何,先找到ScriptResource.axd文件吧。前面說過,我們查看aspx頁面源代碼的同時,還保存了aspx頁面,因此在保存html文件的同時,還會生產一個文件夾;就在這個文件夾下,我們清清楚楚的發(fā)現(xiàn),3個*.axd文件。試試看,居然能用記事本打開!里面就是不折不扣的js代碼呀。
對于ScriptResource.axd,我簡單的解釋一下(其實我的理解也不深,呵呵):
1. 和.aspx一樣,axd也是一個后綴名(基本上等于廢話)
2. asp.net通過檢查文件的后綴名,對文件采取不同的處理(HttpHandler)
3. 這種配置可以在web.config里找到
上面這句話的意思就是,對ScriptResource.axd這種“路徑”,調用System.Web.Handlers.ScriptResourceHandler類進行處理。有興趣的同學可以用reflactor看一看這個類,這里不展開了。
而ScriptResource.axd后面帶的參數(shù):d是指經過編碼的資源鍵,t是一個時間戳,指示這個程序集最后一次修改時間。再次加載這個頁面時,頁面根據(jù)以上兩個參數(shù)判斷資源是否修改過,來決定重新加載或調用瀏覽器緩存。
WebResource.axd是類似的,但是asp.net2.0的機制,此處也只能暫時略過了。
OK!就此開始我們的探索之旅吧。
我們首先打開ScriptResource.axd文件。
今天我們先看這兩段代碼:
這就是“委托”和“回調”的實現(xiàn)。
我們發(fā)現(xiàn),這兩個方法里面使用了這兩個函數(shù)apply()和call(),這兩個函數(shù),是我們進行下一步學習的關鍵。下一篇我們專門研究吧!
最后廢話幾句:
其實,不僅Ajax,就是asp.net本身(指普通的WebForm),也只是(而且只能)利用JavaScript,form表單和服務端交互,關注研究aspx生成的頁面,能幫助我們更深入的了解asp.net的運行機制。
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園