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

时间:2012-05-18 10:31:35

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

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

4 个答案:

答案 0 :(得分:0)

这样做的方法如下:

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

答案 1 :(得分:0)

而不是写

    [System.Web.Services.WebMethod]

使用

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

**

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