久久久久久久性爱潮,国产又粗又猛又爽又黄下载视频,尤物国产在线一区视频,欧美日本国产在线不卡

<sup id="4uqqy"><ol id="4uqqy"></ol></sup>
  • <th id="4uqqy"></th>

      • <strike id="4uqqy"><nobr id="4uqqy"><ins id="4uqqy"></ins></nobr></strike><sup id="4uqqy"></sup><strong id="4uqqy"><u id="4uqqy"></u></strong>
        <sub id="4uqqy"></sub>

          綠色資源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

          綠色資源網

          技術教程
          您的位置:首頁網絡編程.Net編程 → 利用ajax.dll進行asp.net ajax開發(fā)

          利用ajax.dll進行asp.net ajax開發(fā)

          我要評論 2009/09/10 19:10:47 來源:綠色資源網 編輯:綠色資源站 [ ] 評論:0 點擊:669次

          Asynchronous JavaScript and XML(AJAX)最近掀起的高潮,要完全歸功于Google在Google Suggest和Google Maps中的使用。對ASP.NET而言,AJAX不需要回傳就能進行服務器端處理,從而使客戶機(瀏覽器)具有豐富的服務器端能力。換句話說,它為異步指派和處理請求與服務器響應提供了一個框架。AJAX利用了一些不是很新穎的已有技術,但是對這些技術(加到一起就是AJAX)的愛好最近突然升溫。

          請嘗試Michael Schwarz的AJAX .NET包裝器,通過它ASP.NET開發(fā)人員可以快速方便的部署很容易利用AJAX功能的頁面。需要注意的是,這個包裝器處于初期開發(fā)階段,因此還沒有完全成熟。

          它是如何工作的——概述

          AJAX依靠代理(broker)指派和處理往返服務器的請求。對此,.NET包裝器依靠客戶端XmlHttpRequest對象。多數瀏覽器都支持XmlHttpRequest對象,這就是選擇它的原因。因為包裝器的目的是隱藏XmlHttpRequest的實現,我們就不再詳細討論它了。
          包裝器本身通過將.NET函數標記為AJAX方法來工作。標記之后,AJAX就創(chuàng)建對應的JavaScript函數,這些函數(和任何JavaScript函數一樣)作為代理可以在客戶端使用XmlHttpRequest調用。這些代理再映射回服務器端函數。

          復雜嗎?并不復雜。我們來看一個例子。假設有一個.NET函數:

          ublic int Add(int firstNumber, int secondNumber)
          {
          return firstNumber + secondNumber;
          }

          AJAX .NET包裝器將自動創(chuàng)建名為“Add”、帶有兩個參數的JavaScript函數。使用JavaScript(在客戶機上)調用該函數時,請求將傳遞給服務器并把結果返回給客戶機。

          初始設置

          我們首先介紹“安裝”項目中使用的.dll的步驟。如果您很清楚如何添加.dll文件引用,可以跳過這一節(jié)。

          首先,如果還沒有的話,請下載最新的AJAX版本。解壓下載的文件并把ajax.dll放到項目的引用文件夾中。在Visual Studio.NET中有機Solution Explorer的“References(引用)”節(jié)點并選擇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處理:

          〈configuration>
          〈system.web>
          〈httpHandlers>
          〈add verb="POST,GET" path="ajax/*.ashx"
          type="Ajax.PageHandlerFactory, Ajax" />
          〈/httpHandlers>

          〈system.web>
          〈/configuration>

          簡言之,上面的代碼告訴ASP.NET,和指定路徑(ajax/*.ashx)匹配的任何請求都由Ajax.PageHandlerFactory而不是默認處理程序工廠來處理。不需要創(chuàng)建ajax子目錄,使用這個神秘的目錄只是為了讓其他HttpHandlers能夠在自己建立的子目錄中使用.ashx擴展。

          建立頁面

          現在我們可以開始編碼了。創(chuàng)建一個新頁面或者打開已有的頁面,在file后的代碼中,為Page_Load事件添加以下代碼:

          public class Index : System.Web.UI.Page{
          private void Page_Load(object sender, EventArgs e){
          Ajax.Utility.RegisterTypeForAjax(typeof(Index));
          //
          }
          //
          }


          調用RegisterTypeForAjax將在頁面上引發(fā)后面的JavaScript(或者在頁面中手工加入以下兩行代碼):

          〈script language="javascript" src="ajax/common.ashx">〈/script>
          〈script language="javascript"
          src="ajax/Namespace.PageClass,AssemblyName.ashx">〈/script>

          其中最后一行的含義是:

          Namespace.PageClass——當前頁面的名稱空間和類(通常是@Page指令中Inherits屬性的值)

          AssemblyName——當前頁面所屬程序集的名稱(通常就是項目名)
          下面是AjaxPlay項目中sample.aspx頁面的結果例子:

          〈%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" %>
          〈html>
          〈head>
          〈script language="javascript" src="ajax/common.ashx">〈/script>
          〈script language="javascript"
          src="ajax/AjaxPlay.Sample,AjaxPlay.ashx">〈/script>
          〈/head>
          〈body>
          〈form id="Form1" method="post" runat="server">

          〈/form>
          〈/body>
          〈/html>

          可以在瀏覽器中手工導航到src路徑(查看源代碼,復制粘貼路徑)檢查是否一切正常。如果兩個路徑都輸出一些(似乎)毫無意義的文本,就萬事大吉了。如果什么也沒輸出或者出現ASP.NET錯誤,則表明有些地方出現問題。

          即便不知道HttpHandlers如何工作,上面的例子也很容易理解。通過web.config,我們已經保證所有對ajax/*.ashx的請求都由自定義的處理程序處理。顯然,這里的兩個腳本標簽將由自定義的處理程序處理。

          創(chuàng)建服務器端函數

          現在來創(chuàng)建可從客戶端調用中異步訪問的服務器端函數。因為目前還不支持所有的返回類型(不用擔心,將在目前的基礎上開發(fā)新的版本),我們繼續(xù)使用簡單的ServerSideAdd函數吧。在file后的代碼中,向頁面添加下列代碼:

          [Ajax.AjaxMethod()]
          public int ServerSideAdd(int firstNumber, int secondNumber)
          {
          return firstNumber + secondNumber;
          }

          要注意,這些函數具有Ajax.AjaxMethod屬性集。該屬性告訴包裝器這些方法創(chuàng)建javaScript代理,以便在客戶端調用。

          客戶端調用

          最后一步是用JavaScript調用該函數。AJAX包裝器負責創(chuàng)建帶有兩個參數的JavaScript函數Sample.ServerSideAdd。對這種最簡單的函數,只需要調用該方法并傳遞兩個數字:

          〈%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" %>
          〈html>
          〈head>
          〈script language="javascript" src="ajax/common.ashx">〈/script>
          〈script language="javascript"
          src="ajax/AjaxPlay.Sample,AjaxPlay.ashx">〈/script>
          〈/head>
          〈body>
          〈form id="Form1" method="post" runat="server">
          〈script language="javascript">
          var response = Sample.ServerSideAdd(100,99);
          alert(response.value);
          〈/script>
          〈/form>
          〈/body>
          〈/html>

          當然,我們不希望僅僅用這種強大的能力來警告用戶。這就是所有客戶端代理(如JavaScript Sample.ServerSideAd函數)還接受其他特性的原因。這種特性就是為了處理響應而調用的回調函數:

          Sample.ServerSideAdd(100,99, ServerSideAdd_CallBack);

          function ServerSideAdd_CallBack(response){
          if (response.error != null){
          alert(response.error);
          return;
          }
          alert(response.value);
          }


          從上述代碼中可以看到我們指定了另外一個參數。ServerSideAdd_CallBack(同樣參見上述代碼)是用于處理服務器響應的客戶端函數。這個回調函數接收一個響應對象,該對象公開了三個主要性質

          Value——服務器端函數實際返回的值(無論是字符串、自定義對象還是數據集)。

          Error——錯誤消息,如果有的話。

          Request——xml http請求的原始響應。

          Context——上下文對象。

          首先我們檢查error只看看是否出現了錯誤。通過在服務器端函數中拋出異常,可以很容易處理error特性。在這個簡化的例子中,然后用這個值警告用戶。Request特性可用于獲得更多信息(參見下一節(jié))。

          處理類型

          返回復雜類型

          Ajax包裝器不僅能處理ServerSideAdd函數所返回的整數。它目前還支持integers、strings、double、booleans、DateTime、DataSets和DataTables,以及自定義類和數組等基本類型。其他所有類型都返回它們的ToString值。
          返回的DataSets和真正的.NET DataSet差不多。假設一個服務器端函數返回DataSet,我們可以通過下面的代碼在客戶端顯示其中的內容:

          〈script language="JavaScript">
          //Asynchronous call to the mythical "GetDataSet" server-side function
          function getDataSet(){
          AjaxFunctions.GetDataSet(GetDataSet_callback);
          }
          function GetDataSet_callback(response){
          var ds = response.value;
          if(ds != null && typeof(ds) == "object" && ds.Tables != null){
          var s = new Array();
          s[s.length] = "〈table border=1>";
          for(var i=0; i〈ds.Tables[0].Rows.length; i++){
          s[s.length] = "〈tr>";
          s[s.length] = &qu

          關鍵詞:ajax.dll,asp.net,ajax

          閱讀本文后您有什么感想? 已有 人給出評價!

          • 2 歡迎喜歡
          • 2 白癡
          • 2 拜托
          • 2 哇
          • 2 加油
          • 2 鄙視