【问题标题】:How to use a [WebMethod] in server script blocks in the aspx page?如何在 aspx 页面的服务器脚本块中使用 [WebMethod]?
【发布时间】:2012-05-25 22:19:10
【问题描述】:

我正在尝试创建一个简单的 .Net 3.5 页面,其中包含一些 HTML 和 WebMethod。当我尝试从我的浏览器调用我的WebMethod 时,它一直在返回页面。任何想法如何让它工作?

这是我的代码:

<%@ Page Language="C#" Inherits="CFW.WebUI.Page" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    [System.Web.Services.WebMethod]
    public static string Test()
    {
        return "Hola!";
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

注意:我使用 Ajax.Net。我只想从客户端调用 WebMethod(使用 jQuery)。

【问题讨论】:

  • 考虑使用 asmx 等服务
  • 我想把它放在一个文件中。有可能吗?
  • 当然,一旦您将它们全部定义在一个文件中。
  • 我认为不可能在一个 ASMX 文件中使用 .Net webforms 和 webservices。

标签: c# asp.net .net .net-3.5 webmethod


【解决方案1】:

方法如下:

[WebMethod]
public static string SayHello()
{
     return "Hola";
}

在您的页面中,您需要添加一个ScriptManager 并将EnablePageMethods 属性设置为true,如下所示:

<asp:ScriptManager id="sMgr" runat="server" EnablePageMethods="True" />

它所做的只是在您的页面上创建一个Javascript 代理类,它允许您通过在 Javascript 中执行以下操作来调用您的 SayHello 方法:

function InvokeSayHello()
{
     alert(PageMethods.SayHello()); //Will alert 'Hola'
}

【讨论】:

  • 我想不使用 Ajax.Net。
【解决方案2】:

而不是写

    [System.Web.Services.WebMethod]

使用

    [WebMethod]
    [System.Web.Script.Services.ScriptMethod]

【讨论】:

    【解决方案3】:

    我不确定在没有ScriptManager 的情况下这是否有效,但绝对可以在不使用PageMethod 关键字的情况下调用PageMethod。您可以像调用任何其他 web 服务一样调用您的 ASP 页面,例如。 yourpage.aspx/MethodName。该函数应使用[WebMethod] 属性进行修饰,无需在页面类本身上放置[ScriptMethod] 标记或任何内容。我确实注意到这些函数的数据是 POST 而不是 GET,但我不确定这是否需要。

    【讨论】:

      【解决方案4】:

      您可能还想将 [System.Web.Script.Services.ScriptMethod()] 添加到您的方法中:

      **

      http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx

      【讨论】:

      • 添加了它...[ScriptMethod(UseHttpGet=true)] 没有修复它。但是有它很好:-)。
      猜你喜欢
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      相关资源
      最近更新 更多