2010-07-26 116 views
1

我试图从客户端方(从JavaScript调用服务器方法)访问服务器端方法。我正在使用.NET 4.0 Visual Studio 2010 Ultimate。我正在构建一个Web控件(ascx)。 我有一个ASCX页(控件的HTML)和ascx.cs页: 的ASCX如下:ASP.NET 4.0 - 从客户端方法调用服务器端方法 - PageMethods

<%@ 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> 

而且ascx.cs文件是这个(只是打印功能):

[System.Web.Services.WebMethod] 
    public static string manageHandler() { 
    int i = 0; 
    System.Console.WriteLine("Ciao"); 
    return "Hello"; 
} 

好吧,你可以看到我试图通过pagemethods来解决我的问题,它不起作用,我总是getPageMethods未被JScript运行时管理器定义。 那么,有没有可能在.net 4.0中没有PageMethods?

无论如何,有没有解决有关服务器端方法从客户端脚本调用问题的方法?我明白,pagemethods只不过是一种web服务,在我的web应用程序中考虑安全性时,这让我感到困扰。

编辑:

好,似乎jQuery是一个有效的解决方案......但它是能够让我打电话给一个服务器端的方法?我希望是因为我们正在讨论ajax的权利?

编辑2:

啊......另一个问题......我试图用一个WebMethod,但它不工作让我的错误没有找到PageMethods在JavaScript中,而我设置的ScriptManager和方法的属性作为的WebMethod指定....

是因为我在一个ascx里面工作吗?可能?????然后,即使jQuery也不会帮助....

+0

检查此示例:http://tugberkugurlu.com/archive/asp-net-web-forms---calling-web-service-page-methods-using-jquery它可能有帮助。 – tugberk 2011-12-17 19:44:46

回答

1

我相信PageMethods只在上可用,而不是在用户控件上。

+0

嗯,我想过但是在浏览关于这个参数的微软msdn页面时没有发现任何限制......无论如何,你知道如何用输入pagemethods来解决这个问题吗? – Andry 2010-07-26 17:52:21

+0

我没有理由知道为什么你不能仅仅使用你选择的WCF服务 - RESTful或不是,返回XML或JSON,所有你的选择。 – 2010-07-26 18:01:42

+0

约翰是对的;页面方法技巧只适用于ASPX页面后面的代码。如果页面方法的工作方式符合您的要求,ASMX ScriptService将为您提供相同的功能,而无需与WCF争执。 – 2010-07-27 00:31:39

0

我会推荐使用jQuery,它更优雅。 Here's an example

+0

更改他的调用方法并不能解决他的问题。 – 2010-07-26 21:47:16

+1

最后一段问:“无论如何,解决有关从客户端脚本调用服务器端方法问题的另一种方法?”我总是发现PageMethods是一个痛苦的屁股,而jQuery更容易使用。这就是为什么我推荐它 – Vedran 2010-07-26 21:53:24

+0

-1:jQuery如何以任何方式更改服务器端? – 2010-07-27 01:03:12

0

我发现多了一个教程,jQuery来做到这一点:Calling a server side function from JQUERY

希望这将有助于。

+0

请直接链接到文章,而不是使用网址缩写。人们喜欢看链接在哪里。 – 2010-07-27 12:20:33