我正在尝试使用页面方法来调用函数,并且我收到“PageMethods is undefinded”错误。我以前在使用C#而不是VB时使用过它们,所以我想知道我的语法是否错误,因为我能找到的所有例子都是C#。 我也想知道是不是因为我的剧本管理员在主页上?
我到处都读过这个错误,但我看到的一切似乎都是正确的!
有人能指出我做错了吗?
谢谢!
我的代码:
母版页的一部分
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnablePageMethods="true" >
</asp:ScriptManager>
<div id="header">~~~~~
内容页面HTML
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript">
function selectZones(commaSeparatedList){
PageMethods.Zones(commaSeparatedList);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="navigationPlaceHolder" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentBodyPlaceHolder" runat="server">
<a href='' onclick='selectZones("blah,blah,blah"); return false;'>click here</a>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="functionsMenuPlaceHolder" runat="server">
</asp:Content>
内容页码背后
Imports System.Web.Services
Public Class TestClass
Inherits BaseClass
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
<WebMethod()>
Protected Shared Sub Zones(ByVal zones As String)
HttpContext.Current.Response.Write("test = " & zones)
End Sub
End Class
答案 0 :(得分:1)
我相信在脚本管理器的脚本完成运行之前,“selectZones”方法正在运行的问题。我建议您尝试将调用放入文档就绪或事件,并查看此时调用是否正常。脚本将在客户端浏览器看到时运行,如果像脚本管理器一样下载,其他脚本将在页面中首先运行。
答案 1 :(得分:0)
终于解决了。与脚本管理器或类似的东西无关。
我在后面的代码中的方法需要公开所以现在读取如下:
<WebMethod()>
Public Shared Sub Zones(ByVal zones As String)
HttpContext.Current.Response.Write("test = " & zones)
End Sub
没有意识到这是必要的。