我正在尝试创建一个简单的.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)。
答案 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()]添加到您的方法中:
**