从 JavaScript WebMethod 访问单独的 C# 文件

Accessing Separate C# file from JavaScript WebMethod

如果我在默认 aspx.cs 文件中有 c# [WebMethod] 代码,我可以让它工作,但我无法让它为单独的 c# 文件工作,我得到一个 "webmethods undefined"。

我将脚本管理器设置为 EnablePageMehods = true

我的分身class长这样

public class TestClass
{

    [WebMethod]
    public static string Test()
    {
        string a = "Hello Worlds";
        return a;
    }

}

JS 看起来像这样

function testwebmethod() {
       PageMethods.Test(onSucceed, onError);
   }
   function onSucceed(result) {
       alert(result);
   }
   function onError(result) {
   }

我已经尝试从 System.Web.UI.Page 中继承,因为它在默认的 cs 文件中工作,但仍然没有 avil。

提前致谢

WebMethod 属性只有在两个位置指定时才能从客户端调用方法:ASPX 代码隐藏文件和 ASMX Web 服务代码隐藏文件。任何其他地方,它没有任何影响。

在 ASPX 页面上,它意味着定义仅适用于该给定页面的 Web 可访问方法。在 ASMX 网络服务上,它意味着将类似的功能聚集在一起,并使所有页面都可以访问它。 (从概念上讲,一旦您定义了端点,只要您知道 URL 的位置,您就可以从客户端做任何您想做的事……)

如果您想为所有 AJAX 服务器端调用创建单独的 class,请将 ASMX Web 服务添加到您的项目并调用它。您可以查看此 SO post: Calling ASMX Web Service from Javascript 了解更多信息。

从 System.Web.UI.Page 继承不起作用的原因是因为在 ASP.NET 了解如何将 Web 请求路由到它。