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

C# 如何在aspx页面的服务器脚本块中使用[WebMethod]?,c#,asp.net,.net,.net-3.5,webmethod,C#,Asp.net,.net,.net 3.5,Webmethod,我正在尝试创建一个简单的.NET3.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/

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

[System.Web.Services.WebMethod]
公共静态字符串测试()
{
返回“你好!”;
}
...

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

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

**


方法如下:

[WebMethod]
public static string SayHello()
{
     return "Hola";
}
在页面中,您需要添加一个
ScriptManager
,并将
EnablePageMethods
属性设置为
true
,如下所示:

<asp:ScriptManager id="sMgr" runat="server" EnablePageMethods="True" />
而不是写作

    [System.Web.Services.WebMethod]
使用

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

如果不使用
ScriptManager
,我不确定这是否有效,但在不使用
PageMethod
关键字的情况下调用
PageMethod
是完全可能的。您可以像调用任何其他Web服务一样调用ASP页面,例如
yourpage.aspx/MethodName
。函数应该用
[WebMethod]
属性修饰,不需要在页面类本身上放置
[ScriptMethod]
标记或任何东西。我确实注意到我将数据发布到这些函数中,而不是获取,但我不确定这是否是必需的。

考虑使用类似asmxI的服务,希望将其保存在一个文件中。有可能吗?当然,一旦你在一个文件中定义了它们。我认为不可能在一个ASMX文件中使用.Net webforms和webservices。添加了它<代码>[ScriptMethod(UseHttpGet=true)]无法修复它。但是有它是很好的:-),我希望不使用Ajax.Net。
    [WebMethod]
    [System.Web.Script.Services.ScriptMethod]