3

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

这是我的代码:

<%@ 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

4 回答 4

0

方法如下:

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

在您的页面中,您需要添加 aScriptManager并将EnablePageMethods属性设置true为:

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

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

function InvokeSayHello()
{
     alert(PageMethods.SayHello()); //Will alert 'Hola'
}
于 2012-05-18T11:57:38.797 回答
0

而不是写

    [System.Web.Services.WebMethod]

利用

    [WebMethod]
    [System.Web.Script.Services.ScriptMethod]
于 2012-11-20T06:37:20.043 回答
0

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

于 2012-11-20T07:32:27.240 回答
-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

于 2012-05-18T11:38:47.603 回答