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

解決 PageMethods 未定義或物件不支援屬性/方法錯誤

     編輯:ASP.NET 基礎

PageMethods 錯誤常見原因與解決方案

在 ASP.NET AJAX 開發中,PageMethods 是呼叫後端靜態方法的常用機制。當出現「未定義」或「物件不支援此屬性或方法」錯誤時,請依序排查以下 5 大關鍵點:

檢查清單

  1. Web.config AJAX 註冊
    確認 <system.web> 區段包含 <pages> 控制項註冊,且 <httpHandlers>、<httpModules> 正確配置 ScriptModule。
  2. ScriptManager 設定
    頁面或母版頁中的 <asp:ScriptManager> 必須設置 EnablePageMethods="true"。
  3. 後端方法簽名
    方法必須聲明為 public static,並標記 [System.Web.Services.WebMethod] 屬性。需引用 System.Web.Services 命名空間。
  4. 頁面指令遺漏
    複製頁面時若連同 <%@ Page ... %> 指令一起複製,會導致 CodeFile、Inherits 屬性與實際類別不符,造成 PageMethods 代理生成失敗。此錯誤無編譯提示,極易被忽略。
  5. JavaScript 呼叫時機
    確保在 Sys.Application.load 事件或 $(document).ready() 之後呼叫 PageMethods,避免腳本載入順序問題。

典型正確代碼結構

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="Demo" %>
<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" />

// 後端
[WebMethod]
public static string GetServerTime() 
{
    return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}

// 前端
function showTime() 
{
    PageMethods.GetServerTime(onSuccess, onError);
    function onSuccess(result) { alert(result); }
    function onError(err) { console.error(err); }
}

排查時建議開啟瀏覽器開發者工具 (F12) 觀察 Network 與 Console 面板,確認 ScriptResource.axd 載入狀態及生成的 PageMethods 代理代碼。

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