如何理解VS2003 ajax的一些常用辦法
VS2003 ajax更名為asp.net ajax前,安裝了開(kāi)發(fā)包就可以在網(wǎng)站的BIN目錄下生成相應(yīng)的atlas的dll文件,這樣發(fā)布時(shí)連同所有的dll組件都會(huì)發(fā)布出去,但是目前VS2003 ajax準(zhǔn)備在VS2007集成到工具箱中,所以現(xiàn)在在VS2005上安裝rc版的ajax時(shí),其控件的命名空間已經(jīng)變?yōu)椋篠ystem.Web.Extensions,在發(fā)布網(wǎng)站的時(shí)候在bin目錄中也不會(huì)產(chǎn)生任何的DLL組件。
這是什么原因呢?是我的程序有誤,仔細(xì)對(duì)代碼做了檢查,并沒(méi)有發(fā)現(xiàn)什么問(wèn)題?;蛘呤桥渲梦募膯?wèn)題,我和其它測(cè)試成功的項(xiàng)目配置文件比較,完全相同。百思不得其解,但明白應(yīng)該是轉(zhuǎn)換時(shí)造成的遺留問(wèn)題。這個(gè)問(wèn)題困擾了我?guī)滋?,在網(wǎng)上也沒(méi)有找到答案,前天參加陳黎夫(Dflying Chen)《css禪意花園》新書(shū)見(jiàn)面會(huì),也沒(méi)有找到明確的答案。
將那個(gè)項(xiàng)目應(yīng)用ajax的計(jì)劃只好暫時(shí)放棄,但心中又有一些不甘,總想找到問(wèn)題所在(完美主義者)。開(kāi)始仔細(xì)比對(duì)VS2003和VS2005項(xiàng)目,終于發(fā)現(xiàn)資源文件AssemblyInfo.cs在VS2003 ajax下是沒(méi)有的,2005下資源文件放在web.config中,但項(xiàng)目在轉(zhuǎn)換后,仍然保留了這個(gè)文件,可能是考慮到有些特殊的配置信息存在,保留下來(lái)便于手工調(diào)整。
打開(kāi)這個(gè)文件,除了版本外并沒(méi)有寫(xiě)入其它什么東西,試著把它刪除看看吧,沒(méi)想到還真就是這兒的問(wèn)題,局部刷新的終于效果出來(lái)了。 #t#
問(wèn)題是解決了,但道理在哪兒呢?或許正如前面所述,轉(zhuǎn)換工具特意保留了這個(gè)資源文件,在2.0的環(huán)境下,發(fā)現(xiàn)存在這個(gè)資源文件,就直接從這里讀取信息,結(jié)果保存在web.config中的相關(guān)配置信息反而被忽略了,從而造成異步調(diào)用時(shí)無(wú)法找到相應(yīng)的資源、ajax失效的情況。
當(dāng)然,我的水平有限,以上原因只是猜測(cè),希望高手指點(diǎn)迷津!
有一個(gè)項(xiàng)目,是由VS2003轉(zhuǎn)換到VS2005下的,這段時(shí)間學(xué)習(xí)了asp.net ajax,感覺(jué)還不錯(cuò),就想著將其應(yīng)用到部分頁(yè)面,MS的東西用著就是簡(jiǎn)單,很快就完成,興沖沖地就想看看成果,系統(tǒng)正常啟動(dòng)了,沒(méi)有任何錯(cuò)誤,誰(shuí)知在我改變下拉列表的選項(xiàng)時(shí),本來(lái)應(yīng)該是UpdatePanel包含的那一塊內(nèi)容刷新,現(xiàn)在變成了整個(gè)頁(yè)面都刷新了,也就是異步調(diào)用變成了同步調(diào)用。
測(cè)試環(huán)境:
開(kāi)發(fā)機(jī)器winxpsp2,VS2005sp1,服務(wù)器發(fā)布win2003sp4,.net2.0framework
希望早日用上正式版的VS2007
解決辦法:
1,在開(kāi)發(fā)機(jī)器上安裝ASPAJAXExtSetup.msi本文發(fā)布日期是07年2月份,ajax版本是RC1
2,找到ajax的安裝路徑,我的是C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025
把其中的System.Web.Extensions.Design.dll和System.Web.Extensions.dll兩個(gè)文件拷貝到你的網(wǎng)站的bin目錄中
3,希望你的網(wǎng)站是新建立的,把a(bǔ)jax目錄中的web.config拷貝到你的網(wǎng)站的根目錄中覆蓋以前的,如果你已經(jīng)對(duì)你的web.config進(jìn)行過(guò)編輯的話,還是手動(dòng)把相關(guān)設(shè)置節(jié)復(fù)制到你的web.config中。
4,到控制面版中卸載asp.net ajax 1.0
5,然后添加對(duì)你網(wǎng)站中bin目錄中的這兩個(gè)DLL文件的引用,如果你的VS2005打過(guò)sp1,在網(wǎng)站的“解決方案資源管理器”中的“引用”加入這兩個(gè)DLL文件來(lái)增加它的命名空間。
6,發(fā)布網(wǎng)站
7,如果還想用ajaxtoolkid的話請(qǐng)將相應(yīng)的dll文件復(fù)制到bin目錄下,并添加引用
一些說(shuō)明:
建議把VS2005打上sp1補(bǔ)丁,可以直接新建asp.net項(xiàng)目,有自己的項(xiàng)目文件,一個(gè)頁(yè)面有三個(gè)文件構(gòu)成,像是回歸到VS2003了,也許sp1更貼近vs2007吧。
如果不打這個(gè)補(bǔ)丁,在母版頁(yè)面的子頁(yè)面中的ajax控件會(huì)出現(xiàn)驗(yàn)證(Intellisense)失敗的問(wèn)題。
忠告:
atlas版本眾多,幾天一變,終于到了RC,還可能有RC1,RC2等,建議減少代碼的復(fù)雜度,以便適應(yīng)升級(jí),還好一度被拿掉的timer控件又回來(lái)了。
VS2005的sp1是史上比較恐怖的東西,安裝前一定要有足夠的準(zhǔn)備(包括心理準(zhǔn)備)
設(shè)置器中所有VS2003 ajax控件的tagPrefix名都變成了"asp",不再是以前的cc1這類(lèi)的命名了,就像普通服務(wù)端控件一樣了。