在已經發布的 asp.net2.0 中,無刷新頁面開發相關部分同 beta2 有不少改動。而且在越來越多的 ajax 開發包被開發出來的情況下, asp.net2.0 自帶的無刷新頁面技術沒有被很多人了解,甚至不少人認為該功能有些“雞肋”。但如果我們僅僅是在程序中加入很少部分的 ajax 特性, atlas 、 ajax.net 等就顯得有些“殺雞用牛刀”的感覺了。而且,我認為使用 asp.net2.0 提供的方法進行開發并不很復雜,相反,使用很少的代碼就可以做出來很棒的效果!
下面我來一步一步的帶大家開發無刷新的頁面!
第一步:實現 icallbackeventhandler 接口
icallbackeventhandler接口位于system.web.ui命名空間下。在beta2時,icallbackeventhandler只包含一個raisecallbackevent方法,即處理回調事件,又返回處理結果。在正式版中,它變成了包含getcallbackresult和raisecallbackevent兩個成員方法,第一個用來返回回調事件的結果,第二個用來出來回調事件。這個變化主要是為了編寫web控件而做的改動,具體可以看一下gridview等控件中的實現代碼。
建立一個 web 網站,我們來修改 default.aspx.cs 文件:
第二步:注冊回調方法
我們在 default.aspx 頁面中添加一個 textbox ,一個 label 和一個 html 控件 button ,并給 button 添加 onclick 事件:
好了,一個無刷新的頁面就開發完了,它可以將你在 textbox 中輸入的文字,通過服務器代碼寫回到頁面的 label 中。是不是很簡單?你可以運行一下你的程序看看效果啦!
下面我們來分析一下這些代碼。
首先,我們看
在這里我要說個題外話,context這么重要的參數在msdn中不但沒有詳細的說明,而且vs2005中文正式版msdn中關于回調的例子竟然還是beta2時的實現!這個版本的msdn可以說是我用過的版本中品質最差的。不過現在的msnd可以用“相當”龐大來形容,出錯也是在所難免的,希望下個版本的msnd會好一些。
ok,在asp.net 2.0中開發具有ajax特性的東東不難吧!其實就是兩步:
1、 在server端實現icallbackeventhandler接口,在接口包含的方法中根據傳遞的參數分別調用不同的處理方法,然后返回結果;
2、 在client端注冊回調函數(當然你也可以在server端注冊),然后實現處理回調結果的函數。其中,如果對context能干靈活運行,你就可以做出非常好的效果了。
在我給出的完整例子中,你們可以看到更完整的處理邏輯和更漂亮的特效,當然,增加的代碼還是很少的!
有將近一年沒有寫blog了,手也比較生了。以前cnblogs的文章我是基本上天天都看的,現在一兩個星期看一次就不錯了,還是走馬觀花的瀏覽幾篇而已。如今每天都是為了生活而奔波,人在江湖,身不由己呀!
發了半天牢騷,我也預告一下,我會在最近寫一些介紹atlas的文章。其實atlas也有很多人都寫過了,不過大都是根據官方文檔的模式寫的,而最近發布的幾版ctp變化挺大的(實現的功能也比較誘人!),對新特性介紹的文章比較少,所以我就來獻丑了,希望對大家使用atlas有所幫助。
新聞熱點
疑難解答
圖片精選