ASP.NET 2.0 Ajax:調用頁面中的類方法

發表于:2008-04-09來源:作者:點擊數: 標簽:AjaxAJAXajax
——此文章摘自《ASP.NET AJAX程序設計:第II卷(客戶端)》定價:55元 特價:41.25元 購買 讓客戶端 Java Script 直接異步調用服務器端的Web Service,這看起來真的是個不錯的主意——理想化的分層Ajax應用程序就應該這樣嘛!不過作為被ASP.NET 服務器端 開發
 ——此文章摘自《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, onSayHelloSuclearcase/" target="_blank" >cceeded);
  }

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97