如何在 aspx 页的服务器脚本块中使用 [WebMethod]

本文关键字:WebMethod 脚本 aspx 服务器 | 更新日期: 2023-09-27 18:34:31

我正在尝试创建一个简单的.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(。

如何在 aspx 页的服务器脚本块中使用 [WebMethod]

执行此操作

的方法如下:

[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'
}

而不是写

    [System.Web.Services.WebMethod]

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

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

您可能

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

**

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