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

时间:2015-05-26 12:25:32

标签: javascript c# asp.net webmethod

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

我将脚本管理器设置为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进行操作,因为它在defualt cs文件中有效,但这仍然无法实现。

提前致谢

1 个答案:

答案 0 :(得分:2)

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

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

如果要为所有AJAX服务器端调用创建单独的类,请将ASMX Web服务添加到项目中并调用它。您可以查看此SO帖子:Calling ASMX Web Service from Javascript以获取更多信息。

继承System.Web.UI.Page的原因不起作用是因为在ASP.NET了解如何将Web请求路由到它之前,您需要有一个ASPX声明性页面指向给定的Page派生类。