1

我正在尝试从客户端访问服务器端方法(即只是从 javascript 调用服务器方法)。我正在使用 .NET 4.0 Visual Studio 2010 Ultimate。我正在构建一个 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>

而 ascx.cs 文件就是这个(只是打印函数):

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

好吧,正如您所看到的,我正在尝试通过 pagemethods 解决我的问题,但它不起作用,而且我总是 getPageMethods 未由 JScript 运行时管理器定义。那么,PageMethods 是否可能在 .net 4.0 中不可用?

无论如何,是否有另一种方法可以解决有关从客户端脚本调用服务器端方法的问题?我知道 pagemethods 只不过是一种 Web 服务,在考虑我的 Web 应用程序的安全性时,这让我有点困扰。

编辑:

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

编辑2:

啊...另一个问题...我尝试使用 webmethod,但是当我按照指定设置 scriptmanager 和方法的属性 WebMethod 时,它不起作用让我在 javascript 中找不到 PageMethods 错误...。

是因为我在 ascx 里面工作??????可能的?????那么,即使是 jQuery 也无济于事......

4

3 回答 3

1

我相信 PageMethods 仅在pages上可用,而不在用户控件上可用。

于 2010-07-26T17:43:53.250 回答
0

我找到了另一个使用 JQuery 的教程: Calling a server side function from JQUERY

希望这会有所帮助。

于 2010-07-27T06:38:13.160 回答
0

我建议使用 jQuery,它更优雅。这是一个例子

于 2010-07-26T21:42:45.943 回答