★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識(shí)重要,素質(zhì)比智力重要,覺(jué)悟比素質(zhì)更重要
          posts - 110,comments - 35,trackbacks - 0

          AJAX在去年已經(jīng)接觸過(guò),但都是使用手動(dòng)的方法編寫(xiě)客戶端代碼,再加上被請(qǐng)求的頁(yè)面,感覺(jué)非常累,雖然早聽(tīng)說(shuō)過(guò)AJAX.NET和其他一些第3方開(kāi)發(fā)的框架,卻一直沒(méi)有時(shí)間來(lái)體驗(yàn)。今天干完手上的活,下了個(gè)最新版本的AJAX.NET體驗(yàn)了下

          我使用的還是VS2003,下載了個(gè)最新版本的AJAX.NET 6.4.5.1,下載地址:www.schwarz-interactive.de 下面說(shuō)說(shuō)使用方法:

          1、準(zhǔn)備工作
          新建項(xiàng)目,使用.NET1.1就引用下載下來(lái)的AJAX.NET的類庫(kù)AjaxPro.dll,如果是使用.NET2.0 就引用AjaxPro2.dll
          首先修改WEB.CONFIG文件
          ?在<system.web> 節(jié)點(diǎn)內(nèi)增加

          <
          httpHandlers>
          ???? <addverb="*"path="*.ashx"type="AjaxPro.AjaxHandlerFactory,AjaxPro"/>
          </httpHandlers>


          2、然后在Page_Load事件中注冊(cè)頁(yè)面類
          如我將使用AJAX的頁(yè)面類名為‘AjaxControls’,注冊(cè)語(yǔ)句就這樣寫(xiě):
          ?????
          AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxControls));

          紅字的地方是我的頁(yè)面的類名
          這句的作用實(shí)際上是在頁(yè)面被請(qǐng)求的時(shí)候生成幾句調(diào)用JS的SCRIPT代碼

          3、編寫(xiě)服務(wù)器端處理函數(shù)
          ????????如:
          ???????? [AjaxPro.AjaxMethod]
          ???????? publicstring Fun(string str)
          ???????? {
          ????????????? return str;
          ???????? }

          ‘[AjaxPro.AjaxMethod]’這句是關(guān)鍵,函數(shù)或方法寫(xiě)法沒(méi)什么特別的地方,只是要使用這句聲明這個(gè)函數(shù)是由AJAX.NET在頁(yè)面異步請(qǐng)求的,總之記住要通過(guò)AJAX獲得數(shù)據(jù)的后臺(tái)函數(shù)就使用[AjaxPro.AjaxMethod]來(lái)聲明一下。
          另外,在AJAX.NET中如果處理函數(shù)需要對(duì)SESSION進(jìn)行操作,‘[AjaxPro.AjaxMethod]’需要改成‘[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]’在 [AjaxPro.AjaxMethod(AjaxPro.……)]? 的‘……?’部分ajax.net還提供了其他很多方法,可以處理一些特殊的請(qǐng)求。
          還有一點(diǎn)注意,如果使用Application,直接讀取或?qū)懭階pplication也是不行的,需要使用HttpContext.Current.Application,同樣對(duì) Request的訪問(wèn)也需要使用HttpContext.Current.Request。原因是直接使用的Application 或Request等 都是由Page類繼承下來(lái)的,而用Ajax.net對(duì)后臺(tái)方法訪問(wèn)的時(shí)候,這些方法并不屬于Page類。但是Session比較特殊,使用 HttpContext.Current.Session仍然不能訪問(wèn),必須使用上面一段所用的方法并且直接就用Session就行。

          4、客戶端代碼
          在我的這個(gè)示例中,使用‘Ajax.AjaxControls.Fun("測(cè)試用的傳遞的字符串參數(shù)");’請(qǐng)求后臺(tái)的函數(shù),然后返回一個(gè)OBJECT對(duì)象,這個(gè)OBJECT的VALUE屬性就可以得到后臺(tái)函數(shù)的返回值
          如:
          function doTest()
          {
          var?getobject = Ajax.AjaxControls.Fun("測(cè)試用的傳遞的字符串參數(shù)");
          alert(getobject.value);
          }
          Ajax 是我這個(gè)項(xiàng)目的命名空間
          AjaxControls 是我這個(gè)頁(yè)面的的類名
          Fun 很明顯就是聲明了的那個(gè)AJAX可調(diào)用的方法名
          ()中的參數(shù)也就是我的Fun函數(shù)所需要的參數(shù)
          doTest() 只是一個(gè)客戶段的函數(shù),可以綁到控件的事件中,也可以已不用事件,隨便怎么處理
          客戶端異步請(qǐng)求這個(gè)函數(shù)所得到的和平時(shí)我們用函數(shù)返回的稍微不同的就是,平時(shí)直接得到函數(shù)類型的返回值,而使用AJAX.NET客戶端異步請(qǐng)求后臺(tái)函數(shù)得到的是個(gè)OBJECT,要通過(guò)這個(gè)OBJECT的VALUE屬性才能得到函數(shù)返回的值。
          通常這里的客戶段腳本還可以這樣寫(xiě):
          ?
          function doTest()
          {
          Ajax.AjaxControls.Fun("測(cè)試用的傳遞的字符串參數(shù)",getdata);
          }
          function getdata(rv)
          {
          ????alert(rv.value);
          }

          Ajax.AjaxControls.Fun 中的參數(shù)除了對(duì)應(yīng)后臺(tái)函數(shù)的參數(shù)外,最后可以使用一個(gè)表達(dá)式參數(shù),這個(gè)參數(shù)是某個(gè)客戶段函數(shù)名,設(shè)置后,Ajax.AjaxControls.Fun請(qǐng)求后所獲得OBJECT對(duì)象將被做為 表達(dá)式參數(shù)函數(shù)的一個(gè)參數(shù)傳遞到該函數(shù)中,然后通過(guò)這個(gè)OBJECT參數(shù)的VALUE就可以獲得 AJAX請(qǐng)求后臺(tái)函數(shù)所返回的值了
          通過(guò)這幾個(gè)步驟 就可以做出一個(gè)簡(jiǎn)單的使用Ajax.net結(jié)合.NET的示例頁(yè)面了。

          下面說(shuō)說(shuō)用后的感受:
          總體感覺(jué)上使用起來(lái)很方便,很簡(jiǎn)單,但是功能不夠強(qiáng)大,也許是我初次涉及的緣故,還沒(méi)摸索出更高級(jí)的使用方法,但是在對(duì)服務(wù)器控件的控制上基本不能實(shí)現(xiàn),需要使用其他方法如獲得控件輸出樣式,然后通過(guò)客戶端方法加載,還有除了能異步的獲得后臺(tái)請(qǐng)求的函數(shù)或方法的返回值之外,其他更具體復(fù)雜的操作都需要手動(dòng)的寫(xiě)代碼解決,不過(guò)確實(shí)是不錯(cuò)的東西,可以很快速的完成某些AJAX的效果。也許還有很多更強(qiáng)大的功能我還沒(méi)摸索到,希望大家指教
          posted on 2007-03-23 10:32 圣域飛俠 閱讀(208) 評(píng)論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)載
          主站蜘蛛池模板: 土默特右旗| 衡山县| 文成县| 北流市| 余庆县| 绵竹市| 沙田区| 灌云县| 东台市| 香河县| 金华市| 佳木斯市| 西城区| 博乐市| 锦屏县| 益阳市| 新建县| 万州区| 响水县| 会宁县| 乐至县| 余江县| 房产| 湛江市| 南开区| 胶州市| 射洪县| 永仁县| 城市| 桃园县| 阳高县| 丹阳市| 沭阳县| 济阳县| 扬州市| 甘南县| 台湾省| 曲水县| 栾川县| 茌平县| 丽水市|