如果我在默认的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文件中有效,但这仍然无法实现。
提前致谢
答案 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派生类。