首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

AjaxPro.NET 實現客戶端調用服務端方法完整教程:注冊、類對象傳遞、異步回調

     編輯:ASP.NET 基礎

前言

AjaxPro.NET 是早期 ASP.NET AJAX 框架,通過自動生成 JavaScript 代理類,實現客戶端「像調用本地函數一樣」調用服務端方法。本文涵蓋配置、注冊、基礎調用、對象傳遞、異步模式、錯誤處理、現代替代方案對比。

一、環境配置

1. 引用組件

  • 下載 `AjaxPro.dll` (或 `AjaxPro.2.dll` for .NET 2.0+)
  • 項目引用:`AjaxPro.dll`

2. Web.config 註冊 HttpHandler



  
    
      
      
    
  
  
  
  
    
      
    
  

二、頁面注冊與基礎調用

1. 後台注冊類型 (Page_Load)


protected void Page_Load(object sender, EventArgs e)
{
    // 關鍵:注冊當前頁面類型,生成 JavaScript 代理
    AjaxPro.Utility.RegisterTypeForAjax(typeof(TestPage)); 
    // 若在命名空間:typeof(Namespace.TestPage)
}

2. 服務端方法標記 [AjaxMethod]


[AjaxPro.AjaxMethod]
public string GetServerTime()
{
    return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}

[AjaxPro.AjaxMethod]
public string GetString()
{
    return "Hello AjaxPro";
}

3. 客戶端調用 (自動生成代理:頁面類名.方法名)






三、進階:服務端對象傳遞到客戶端

1. 定義可序列化類 (App_Code 或獨立項目)


public class Student
{
    private string _name = "張三";
    public int Age = 25;
    
    public string Name 
    { 
        get { return _name; } 
        set { _name = value; } 
    }
}

2. 服務端返回對象


[AjaxPro.AjaxMethod]
public Student GetStudent()
{
    return new Student();
}

[AjaxPro.AjaxMethod]
public void SetStudent(Student stu)
{
    // 接收客戶端修改後的對象
    string name = stu.Name; // 客戶端可能已改為 "李四"
    // 業務邏輯...
}

3. 客戶端操作對象



四、異步調用模式 (非阻塞 UI)



五、錯誤處理與調試

問題原因解決
JavaScript 报错 "TestPage is undefined"未調用 RegisterTypeForAjax、或類名不匹配檢查 Page_Load 注冊、命名空間一致
服務端方法不執行缺少 [AjaxMethod] 屬性、方法非 public添加屬性、確保 public
對象屬性丟失字段非 public、無屬性包裝、未標記 Serializable用 public 屬性、必要時 [Serializable]
中文亂碼頁面編碼與 AjaxPro 生成 JS 編碼不一致頁面 @Page ContentType="text/html; charset=utf-8"
調試服務端代碼JS 調用無法直接斷點VS 調試器附加 w3wp.exe、或用 Fiddler 查看 AJAX 請求/響應

六、現代替代方案對比

方案優點缺點適用場景
AjaxPro.NET零配置生成代理、對象自動序列化、Web Forms 原生停止維護、無 .NET Core 支持、ViewState 依賴維護舊 Web Forms 專案
ASP.NET AJAX (ScriptManager)內置、支持 UpdatePanel、頁面方法重、ViewState 綁定、生成代碼冗長Web Forms 新功能
jQuery $.ajax + WebMethod輕量、標準 REST、獨立於服務端框架手寫 JSON 序列化、無強類型代理現代 Web Forms / MVC
ASP.NET Web APIRESTful、內容協商、OData、跨平台需獨立控制器、路由配置新項目標準選擇
SignalR實時雙向、自動重連、多傳輸降級基礎設施複雜實時推送場景

總結

AjaxPro.NET 以「自動生成 JavaScript 代理」極大簡化了早期 AJAX 開發,核心流程:**引用 DLL → Web.config 註冊 Handler → Page_Load RegisterTypeForAjax → [AjaxMethod] 標記方法 → 客戶端 `頁面類名.方法名()` 調用**。對象傳遞自動處理序列化,支持同步/異步兩種模式。新項目請直接使用 **Web API + jQuery/Fetch** 或 **Blazor WebAssembly**,獲得現代化架構與生態支持。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved