關于VS2003軟件出現的種種問題進行說明解釋
本文講述如何導入項目,怎樣創建VS2003軟件。這些內容都是我今天花花了一周的時間查閱資料并像IT精英學習出來的,中間可能有不少錯誤是我沒有挑出的,歡迎大家指正。
而VS2003軟件中,可以建立多個form,但根本就沒有實際意義,因為你會發現,在客戶端收到的代碼中,依然只有當前活動的一個card定義,并且你會看到,生成的wml中,card是沒有id這個屬性的.因為它只能生成一個card,因此微軟干脆把card的id這個屬性也給拋棄了,害得我研究半天,怎么來設定card 的id,氣憤!
而你在服務器定義的其它form跑哪里去了呢,它還是在服務器上,如果你當前的card中有跳轉到其它card的代碼,用戶讓它執行后,其實又讓手機去連接了服務器,來獲得另外一個card,因此微軟的所謂支持多form,是把我們騙了,與wml制定多card的初衷完全不合.
既然這樣如何解決呢,當然就只有不用asp.net的form跳轉功能了,用手工輸出wml的方式,向客戶端發送多card的代碼.這中間就要用到自定義控件,以字符串輸出的方式來輸出wml,并且要欺騙asp.net,讓它輸出多card.注意最終生成的結果要完全符合wml的標準才行.
感覺微軟的移動web自適應功能,反而給開發者帶來不便,并且自帶的移動控件的兼容性能不能通過移動聯通的要求,都很成問題.
聽說VS2005是可以實現多card的輸出,沒用過,不知道情況如何。
有一個項目,是由VS2003軟件轉換到VS2005下的,這段時間學習了asp.net ajax,感覺還不錯,就想著將其應用到部分頁面,MS的東西用著就是簡單,很快就完成,興沖沖地就想看看成果,系統正常啟動了,沒有任何錯誤,誰知在我改變下拉列表的選項時,本來應該是UpdatePanel包含的那一塊內容刷新,現在變成了整個頁面都刷新了,也就是異步調用變成了同步調用。
這是什么原因呢?是我的程序有誤,仔細對代碼做了檢查,并沒有發現什么問題。或者是配置文件的問題,我和其它測試成功的項目配置文件比較,完全相同。
百思不得其解,但明白應該是轉換時造成的遺留問題。這個問題困擾了我幾天,在網上也沒有找到答案,前天參加陳黎夫(Dflying Chen)《css禪意花園》新書見面會,也沒有找到明確的答案。
將那個項目應用ajax的計劃只好暫時放棄,但心中又有一些不甘,總想找到問題所在(完美主義者)。開始仔細比對vs2003軟件和2005項目,終于發現資源文件AssemblyInfo.cs在vs2005下是沒有的,2005下資源文件放在web.config中,但項目在轉換后,仍然保留了這個文件,可能是考慮到有些特殊的配置信息存在,保留下來便于手工調整。
打開這個文件,除了版本外并沒有寫入其它什么東西,試著把它刪除看看吧,沒想到還真就是這兒的問題,局部刷新的終于效果出來了。
問題是解決了,但道理在哪兒呢?或許正如前面所述,轉換工具特意保留了這個資源文件,在2.0的環境下,發現存在這個資源文件,就直接從這里讀取信息,結果保存在web.config中的相關配置信息反而被忽略了,從而造成異步調用時無法找到相應的資源、ajax失效的情況。
當然,我的水平有限,以上原因只是猜測,希望高手指點迷津!