从JavaScript WebMethod中访问单独的c#文件

Accessing Separate C# file from JavaScript WebMethod

本文关键字:文件 单独 访问 JavaScript WebMethod      更新时间:2023-09-26

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

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

我单独的类是这样的

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文件中工作,但这仍然没有害处。

Thanks in advance

WebMethod属性只允许一个方法在两个位置被指定时可以从客户端调用:ASPX代码文件和ASMX web服务代码文件。其他任何地方都不会有任何影响。

在ASPX页面上,它意味着定义只适用于给定页面的web可访问方法。在ASMX web服务中,它意味着将类似的功能聚集在一起,并使其可被所有页面访问。(从概念上讲,一旦定义了端点,只要知道url在哪里,就可以从客户端执行任何操作。)

如果您想为所有AJAX服务器端调用创建一个单独的类,请向您的项目添加一个ASMX Web服务并调用它。你可以看看这篇文章:从Javascript调用ASMX Web服务获得更多信息。

从System.Web.UI.Page继承不工作的原因是因为你需要在ASP. js之前有一个ASPX声明性页面指向给定的page派生类。. NET知道如何将web请求路由到它。