【问题标题】:ASP.NET 4.0 - Calling a server-side method from a client side method - PageMethodsASP.NET 4.0 - 从客户端方法调用服务器端方法 - PageMethods
【发布时间】:2011-03-21 05:25:53
【问题描述】:

我正在尝试从客户端访问服务器端方法(即从 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 也无济于事......

【问题讨论】:

标签: c# asp.net asmx pagemethods


【解决方案1】:

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

【讨论】:

  • 嗯,我想了想,但在浏览microsoft msdn页面时没有发现关于这个参数的限制......无论如何,你知道如何用put pagemethods解决这个问题吗?
  • 我没有理由不知道您为什么不能只使用您选择的 WCF 服务 - RESTful 或非 RESTful,返回 XML 或 JSON,所有您的选择。
  • 约翰是正确的;页面方法技巧仅适用于 ASPX 页面背后的代码。如果页面方法按照您的意愿工作,ASMX ScriptService 将为您提供相同的功能,而无需使用 WCF。
  • @Dave:没有麻烦,只是内置过时、停滞、缺乏错误修复、功能或未来。
  • ScriptServices 非常适合 AJAX 回调。对于这种简单的场景,恐吓人们将已经运行良好且不需要 WCF 仍然提供的其他错误修复和功能的东西过度复杂化是没有意义的。
【解决方案2】:

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

【讨论】:

  • 改变他的调用方法并不能解决他的问题。
  • 最后一段问:“无论如何,是否有另一种方法可以解决从客户端脚本调用服务器端方法的问题?”我一直觉得 PageMethods 很麻烦,而 jQuery 更容易使用。这就是我推荐它的原因
  • 我从来没有说过它改变了服务器端的任何东西,我只是想指出的是,我发现 jQuery 在客户端使用起来更加用户友好。
【解决方案3】:

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

希望这会有所帮助。

【讨论】:

  • 请直接链接到文章,而不是使用 URL 缩短器。人们喜欢查看链接将他们带到哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多