如何在 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(。
执行此操作
的方法如下:
[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