Asynchronous JavaScript and XML(Ajax)最近掀起的高潮,要完全歸功于Google在Google Suggest和Google Maps中的使用。對ASP.NET而言,Ajax不需要回傳就能進行服務器端處理,從而使客戶機(瀏覽器)具有豐富的服務器端能力。換句話說,它為異步指派和處理請求與服務器響應提供了一個框架。Ajax利用了一些不是很新穎的已有技術,但是對這些技術(加到一起就是Ajax)的愛好最近突然升溫。 請嘗試Michael Schwarz的AJAX .NET包裝器,通過它ASP.NET開發人員可以快速方便的部署很容易利用AJAX功能的頁面。需要注意的是,這個包裝器處于初期開發階段,因此還沒有完全成熟。 然而,AJAX這樣的技術很可能破壞分層體系結構(N-Tier)。我的看法是,AJAX增加了表示邏輯層(甚至更糟,業務層)滲透到表示層的可能性。像我這樣嚴肅的架構師對這種想法可能畏步不前。我感到AJAX的使用即便稍微越過了層次邊界,這種代價也是值得深思的。當然,這要視具體的項目和環境而定。 起步:它是如何工作的——概述 AJAX依靠代理(broker)指派和處理往返服務器的請求。對此,.NET包裝器依靠客戶端XmlHttpRequest對象。多數瀏覽器都支持XmlHttpRequest對象,這就是選擇它的原因。因為包裝器的目的是隱藏XmlHttpRequest的實現,我們就不再詳細討論它了。 包裝器本身通過將.NET函數標記為AJAX方法來工作。標記之后,AJAX就創建對應的JavaScript函數,這些函數(和任何JavaScript函數一樣)作為代理可以在客戶端使用XmlHttpRequest調用。這些代理再映射回服務器端函數。 復雜嗎?并不復雜。我們來看一個例子。假設有一個.NET函數: public int Add(int firstNumber, int secondNumber) Ajax .NET包裝器將自動創建名為“Add”、帶有兩個參數的JavaScript函數。使用JavaScript(在客戶機上)調用該函數時,請求將傳遞給服務器并把結果返回給客戶機。 初始設置 我們首先介紹“安裝”項目中使用的.dll的步驟。如果您很清楚如何添加.dll文件引用,可以跳過這一節。 首先,如果還沒有的話,請下載最新的AJAX版本。解壓下載的文件并把Ajax.dll放到項目的引用文件夾中。在Visual Studio.NET中有機Solution Explorer的“References(引用)”節點并選擇Add Reference(添加引用)。在打開的對話框中,單擊Browse(瀏覽)并找到ref/Ajax.dll文件。依次單擊Open(打開)和Ok(確認)。這樣就可以用AJAX .NET包裝器編程了。 建立HttpHandler 為了保證正常工作,第一步是在web.config中設置包裝器的HttpHandler。不需要詳細解釋HttpHandlers是什么及其如何工作,只要知道它們用于處理ASP.NET請求就足夠了。比如,所有*.aspx頁面請求都由System.Web.UI.PageHandlerFactory類處理。類似的,我們讓所有對Ajax/*.ashx的請求由Ajax.PageHandlerFactory處理: 簡言之,上面的代碼告訴ASP.NET,和指定路徑(Ajax/*.ashx)匹配的任何請求都由Ajax.PageHandlerFactory而不是默認處理程序工廠來處理。不需要創建Ajax子目錄,使用這個神秘的目錄只是為了讓其他HttpHandlers能夠在自己建立的子目錄中使用.ashx擴展。 建立頁面 現在我們可以開始編碼了。創建一個新頁面或者打開已有的頁面,在file后的代碼中,為Page_Load事件添加以下代碼: public class Index : System.Web.UI.Page{ 調用RegisterTypeForAjax將在頁面上引發后面的JavaScript(或者在頁面中手工加入以下兩行代碼): 其中最后一行的含義是: Namespace.PageClass——當前頁面的名稱空間和類(通常是@Page指令中Inherits屬性的值) AssemblyName——當前頁面所屬程序集的名稱(通常就是項目名) 下面是AjaxPlay項目中sample.aspx頁面的結果例子: <%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" ... %> 可以在瀏覽器中手工導航到src路徑(查看源代碼,復制粘貼路徑)檢查是否一切正常。如果兩個路徑都輸出一些(似乎)毫無意義的文本,就萬事大吉了。如果什么也沒輸出或者出現ASP.NET錯誤,則表明有些地方出現問題。 即便不知道HttpHandlers如何工作,上面的例子也很容易理解。通過web.config,我們已經保證所有對Ajax/*.ashx的請求都由自定義的處理程序處理。顯然,這里的兩個腳本標簽將由自定義的處理程序處理。
原文轉自:http://www.anti-gravitydesign.com
{
return firstNumber + secondNumber;
}
type="Ajax.PageHandlerFactory, Ajax" />
...
private void Page_Load(object sender, EventArgs e){
Ajax.Utility.RegisterTypeForAjax(typeof(Index));
//...
}
//...
}
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97