C# ASP.NET 4.0-从客户端方法调用服务器端方法-PageMethods

C# ASP.NET 4.0-从客户端方法调用服务器端方法-PageMethods,c#,asp.net,asmx,pagemethods,C#,Asp.net,Asmx,Pagemethods,我试图从客户端访问服务器端方法(这只是从javascript调用服务器方法)。我正在使用.NET4.0VisualStudio2010Ultimate。我正在构建一个web控件(ascx)。 我有一个ascx页面(控件的html)和一个ascx.cs页面: ascx如下所示: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="BoxButton.ascx.cs" Inherits="ATB.Controls._BoxBut

我试图从客户端访问服务器端方法(这只是从javascript调用服务器方法)。我正在使用.NET4.0VisualStudio2010Ultimate。我正在构建一个web控件(ascx)。 我有一个ascx页面(控件的html)和一个ascx.cs页面: ascx如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BoxButton.ascx.cs" Inherits="ATB.Controls._BoxButton" %>

<asp:ScriptManager ID="SM_ScriptManager" runat="server" EnablePageMethods="true" />
<script type="text/javascript">
    function handle() {
        PageMethods.manageHandler();
    }
</script>
<span id="BoxButton_HtmlSpan" runat="server" onclick="handle();" style="background-color:#efefef;border-style:solid;border-width:1px;border-color:#cccccc;height:25px;text-align:center;padding:3px 3px 3px 3px;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;color:#333333;line-height:15px">
    <asp:Label runat="server" Text="Button" id="Text_Label"></asp:Label>
</span>
正如您所看到的,我正试图通过pagemethods解决我的问题,但它不起作用,而且我总是在JScript运行时管理器中未定义getPageMethods。 那么,PageMethods是否可能在.NET4.0中不可用

无论如何,有没有其他方法可以解决从客户端脚本调用服务器端方法的问题?我知道pagemethods只不过是一个web服务,这让我在考虑web应用程序的安全性时有些困扰

编辑:

好吧,看来jQuery是一个有效的解决方案。。。但是它能允许我调用服务器端方法吗?我希望是因为我们在谈论ajax,对吗

编辑2:

啊。。。另一个问题。。。我尝试使用webmethod,但在我将scriptmanager和方法的属性webmethod设置为指定值时,在javascript中找不到PageMethods时出现错误,这不起作用


是因为我在ascx里面工作吗??????可能的然后,即使是jQuery也没有帮助……

我认为PageMethods只在页面上可用,而不是在用户控件上。

我认为PageMethods只在页面上可用,而不是在用户控件上。

我建议使用jQuery,它更优雅

我建议使用jQuery,它要优雅得多

我又找到了一个关于JQuery的教程:


希望这会有所帮助。

我又找到了一个关于JQuery的教程:


希望这会有所帮助。

我考虑过这个问题,但在浏览有关此参数的microsoft msdn页面时没有发现任何限制。。。不管怎样,你知道如何用Put pagemethods解决这个问题吗?我不知道为什么你不能使用你选择的WCF服务——RESTful与否,返回XML或JSON,一切由你选择;page方法技巧仅在ASPX页面的代码隐藏中有效。如果一个页面方法按您所希望的方式工作,ASMX脚本服务将为您提供相同的功能,而无需麻烦WCF。@Dave:没有麻烦,只是内置的过时、停滞、缺少错误修复、功能或未来。脚本服务非常适合AJAX回调。对于那个简单的场景,没有必要吓唬人们让已经运行良好的东西变得过于复杂,并且不需要WCF仍然需要的额外错误修复和功能。我考虑过这一点,但在浏览有关此论点的microsoft msdn页面时没有发现任何限制。。。不管怎样,你知道如何用Put pagemethods解决这个问题吗?我不知道为什么你不能使用你选择的WCF服务——RESTful与否,返回XML或JSON,一切由你选择;page方法技巧仅在ASPX页面的代码隐藏中有效。如果一个页面方法按您所希望的方式工作,ASMX脚本服务将为您提供相同的功能,而无需麻烦WCF。@Dave:没有麻烦,只是内置的过时、停滞、缺少错误修复、功能或未来。脚本服务非常适合AJAX回调。对于这个简单的场景,没有必要吓唬人们让一些已经运行良好且不需要WCF仍然提供的额外错误修复和功能的东西变得过于复杂。更改他的调用方法并不能解决他的问题。最后一段问:“无论如何,有没有其他方法可以解决从客户端脚本调用服务器端方法的问题?“我总是觉得PageMethods是个麻烦事,而jQuery更容易使用。这就是我推荐itI的原因我从未说过它在服务器端改变了任何东西,我想指出的是,我发现jQuery在客户端使用起来更方便用户。更改他的调用方法并不能解决他的问题。最后一段问:“无论如何,有没有其他方法可以解决从客户端脚本调用服务器端方法的问题?“我总是觉得PageMethods是个麻烦事,而jQuery更容易使用。这就是我推荐itI的原因我从来没有说过它在服务器端改变了什么,我想指出的是,我发现jQuery在客户端使用起来更方便用户。请直接链接到文章,而不是使用URL缩短器。人们喜欢看到链接将他们带到哪里。请直接链接到文章,而不是使用URL缩短器。人们希望看到链接将他们带到何处。检查此示例:可能有帮助。检查此示例:可能有帮助。
[System.Web.Services.WebMethod]
   public static string manageHandler() {
   int i = 0;
   System.Console.WriteLine("Ciao");
   return "Hello";
}