页面方法抛出未定义

时间:2010-12-01 14:09:06

标签: c# javascript asp.net vb.net

我正在尝试使用页面方法来调用函数,并且我收到“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

2 个答案:

答案 0 :(得分:1)

我相信在脚本管理器的脚本完成运行之前,“selectZones”方法正在运行的问题。我建议您尝试将调用放入文档就绪或事件,并查看此时调用是否正常。脚本将在客户端浏览器看到时运行,如果像脚本管理器一样下载,其他脚本将在页面中首先运行。

答案 1 :(得分:0)

终于解决了。与脚本管理器或类似的东西无关。

我在后面的代码中的方法需要公开所以现在读取如下:

 <WebMethod()> 
Public Shared Sub Zones(ByVal zones As String) 
    HttpContext.Current.Response.Write("test = " & zones) 
End Sub 

没有意识到这是必要的。