• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    ASP.NET 2.0 Ajax程序設計:調用頁面中的類方法

    發布: 2008-4-08 12:53 | 作者: ASP.NET 2.0 Ajax程序 | 來源: examda.com | 查看: 205次 | 進入軟件測試論壇討論

    領測軟件測試網 ——此文章摘自《ASP.NET AJAX程序設計:第II卷(客戶端)》定價:55元 特價:41.25元 購買>>

      讓客戶端JavaScript 直接異步調用服務器端的Web Service,這看起來真的是個不錯的主意——理想化的分層Ajax應用程序就應該這樣嘛!不過作為被ASP.NET服務器端開發模型“寵壞”了的我們,更加熟悉的方法是直接將方法寫在ASP.NET頁面中。比如在處理頁面中的某個服務器端按鈕Click事件的代碼時,就可能這樣調用定義在同一個頁面代碼文件中的方法:
      protected void Button1_Click(object sender, EventArgs e)
      {
      myLabel.Text = this.GetTextForLabel();
      }
      public string GetTextForLabel()
      {
      // ......
      return "Some Text";
      }

      對于那些“遺留”的ASP.NET應用程序來講,這樣直接定義在ASP.NET頁面中的方法更是相當常見。若是僅僅為了配合ASP.NET AJAX的客戶端訪問Web Service功能,就將這些方法一一遷移到Web Service中,豈不是非常麻煩?

      好在ASP.NET AJAX在設計時考慮到了這個問題,并提供給我們一種作為替代的選擇。ASP.NET AJAX異步通信層能夠將聲明在ASP.NET頁面中公有的類方法(C#中的static,VB.NET中的Shared)當作Web Service中聲明的方法一樣對待,為其生成類似的客戶端調用代理。

      我們還是通過一個實例程序來了解這個功能。該示例程序的功能與界面與前一節中的完全一致,唯一的不同就是,客戶端異步調用的不再是某個Web Service,而是定義在ASP.NET頁面中的類方法。

      首先是定義在ASP.NET頁面中的類方法,完整的方法聲明如下:
      [WebMethod]
      public static string SayHelloFromPage(string name)
      {
      return string.Format("Hello {0}!", name);
      }

      特別需要注意的是,若要讓ASP.NET AJAX為其生成客戶端調用代理,那么一定要為該方法添加[WebMethod]屬性。

      然后是ScriptManager控件,注意粗體部分代碼設置了EnablePageMethods屬性為true,這也是讓客戶端能夠直接調用服務器端頁面方法所必需的。若忘記設定該屬性,那么程序將無法完成預期功能! 

      程序界面中的UI元素和前一節示例程序中的完全一致,這里不贅:
      onclick="return btnInvoke_onclick()" />

      而本示例程序中按鈕的click事件處理函數以及異步調用的回調函數則需要一定的修改,如下所示:
      function btnInvoke_onclick() {
      var theName = $get("tbName").value;
      PageMethods.SayHelloFromPage(theName, onSayHelloSucceeded);
      }
      function onSayHelloSucceeded(result) {
      $get("result").innerHTML = result;
      }

      注意上述代碼中的粗體部分?梢钥吹,調用頁面方法代理時統一的前綴為PageMethods。接下來是頁面方法的名稱,這里為SayHelloFromPage(),其參數列表和C#中方法的定義一致,額外的一個參數表示本次異步調用的回調函數。即語法為:
      PageMethods.[MethodName](param1, param2,..., callbackFunction);

      想要使用ASP.NET AJAX在客戶端JavaScript中異步調用定義在ASP.NET頁面中的方法,我們需要:
      將該方法聲明為公有(public);
      將該方法聲明為類方法(C#中的static,VB.NET中的Shared),而不是實例方法;
      為該方法添加[WebMethod]屬性;
      將頁面中ScriptManager控件的EnablePageMethods屬性設置為true;
      在客戶端使用如下JavaScript語法調用該頁面方法:
      PageMethods.[MethodName](param1, param2,..., callbackFunction);
      為客戶端異步調用指定回調函數,在回調函數中接收返回值并進一步處理。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: ajax AJAX Ajax


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>