ASP.NET 與 Ajax 的實現方式

來源:互聯網
上載者:User
Ajax 應該不是一項技術,是一種思想而已,跟 ASP.NET 以及其它 Web 開發語言沒有什麼太大關係,這裡只是談談 ASP.NET 中目前使用的 Ajax 技術以及其它一些實現 Ajax 的優秀架構。

Ajax 已經很流行一陣子了,現在談 Ajax 覺得有點老土,-_____-```。目前所謂的 Web2.0 網站,基本上沒有不使用 Ajax 的,就如使用 RSS 一樣,就如同一個標籤,貼上去就成了 2.0。Ajax 具體細節不談,其目的就是讓使用者觸發一些操作的時候,頁面不會全部重新整理,只重新整理待更新的“部分頁面”,載入資料的過程中,用 Loading 的圖片來表示正在載入資料,不只是看起來挺不錯,也提高了使用者的訪問體驗,有一種酷酷的感覺。

至於 ASP.NET 中用到的 Ajax ,我想大多數人使用的是 Ajax.net / AjaxProfessional 或者 ASP.NET 2.0 中帶有的 Atlas 架構。因為都用過,我感覺這些都不是很好的 Ajax 解決方案。

AjaxPro 用起來不是很方便,頁面需要在 Page_Load 裡面註冊,類似於

private void Page_Load(object sender, System.EventArgs e)
{
   AjaxPro.Utility.RegisterTypeForAjax(typeof(DataAccess.MyAjax));
}

而且 ASPX 頁面要包含一個 Runat=Server 的<Asp:From> 標記,這樣 Ajax.net 會將用到的一些通用函數以及你自訂的函數載入進來,如果沒有 <Asp:From> 其實也可以,手動添加就可以了。但是,在我以前做過的應用中,時常出現的一些問題,比如,經常發現瀏覽器狀態列會有 js 指令碼錯誤,而此時你所做的 Ajax 效果會全部失效,解決辦法就是,把那個 Ajax.dll /AjaxPro.dll 給重新覆蓋一下就可以了,問題的原因究竟是什麼,目前還不知道。

至於 Atlas,我對它的感覺其實就跟對 DataGrid 的感覺一樣,嗯,這種控制項的好用是好用,很方便,但是,真正做一些 Web 應用程式的時候,你不得不考慮到效能以及分層等各種問題。我想,在比較正式的 Web 應用程式中,沒幾個人去用 DataGrid 去顯示一些資料吧,建議大家盡量少用這些控制項。另外就是,Atlas 的執行效率確實不夠理想,一直在那裡 Loading,等了好長時間,竟然出現什麼指令碼錯誤,汗。

那還有沒有其它解決方案嗎?你可以自己寫些 Javascript 函數去實現。不過,我這裡推薦用 jQuery 這個 Javascript 架構,從百度百科引用一段對其的介紹:

jQuery 是繼 prototype 之後又一個優秀的 Javascrīpt 架構。其宗旨是——WRITE LESS,DO MORE,寫更少的代碼,做更多的事情。
它是輕量級的 js 庫(壓縮後只有21k) ,這是其它的 js 庫所不及的,它相容 CSS3,還相容各種瀏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
jQuery 是一個快速的,簡潔的 javaScript 庫,使使用者能更方便地處理 HTML documents、events、實現動畫效果,並且方便地為網站提供 AJAX 互動。
jQuery 還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的外掛程式可供選擇。
jQuery 能夠使使用者的 html 頁保持代碼和 html 內容分離,也就是說,不用再在 html 裡面插入一堆js來調用命令了,只需定義 id 即可。

看來這段介紹你會知道,Ajax 效果只是 jQuery 的眾多功能的一種,一般來說,Web 應用程式中使用 Ajax,必然也離不開 Javascript,而 jQuery 正是為大家封裝了一些 JS 函數,使得你不在被 JS 的紛繁複雜所擔心,一切由 jQuery 幫你實現。

看一個小例子,就知道用 jQuery 做 Ajax 實在是太方便了。

比如某個 ASPX 或者 HTML 頁面裡面有個 Button,點擊觸發 Ajax 載入資料,顯示到 <SPAN ID=News> 裡面。點擊那個 Button 觸發一個 JS 函數即可:

function GetNews()
{
            $("#News").html("Loading News......");
            $.ajax({
                type:"post",
                url:"/ajax.aspx?act=getnews",
                dataType:"html",
                data:"",
                success:function(result)
                {
                    $("#News").html(result);
                }
                });
}

這個函數就會先在那個 SPAN 裡面顯示“Loading News....”,通過非同步呼叫,訪問 /Ajax.aspx 這個頁面,通過傳遞的 URL 參數 act=News 告訴頁面需要什麼類型的資料,你可以根據不同的參數,將資料通過 Ajax.aspx 直接 Write 到頁面上,然後返回給上述 JS 函數,呈現到頁面上,就這樣簡單搞定!

當然,jQuery 裡面並不是只有這一種 Ajax 效果實現方式,這裡給出一些 jQuery 的資源,花上幾個小時的時間學一下,很值得:

jQuery 官網:http://jquery.com/
jQuery 中文 API 文檔: http://jquery.org.cn/visual/cn/index.xml 
jQeury 中文入門教程: http://www.k99k.com/jQuery_getting_started.html

至於其它的 Javascript 優秀架構有很多了,比如 Yahoo! User Interface Library,Prototype,Rico,Qooxdoo,Dojo 等,另外還有 Ajax 方面一些資源可以參考一下這裡收集的資源。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.