【发布时间】:2010-12-01 14:09:06
【问题描述】:
我正在尝试使用页面方法来调用函数,但出现“PageMethods 未定义”错误。我之前在使用 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
【问题讨论】:
-
尝试将 ScriptManager 放在内容页面的 .aspx 中。运气好吗?
-
Hmm.. 下一步调试:创建全新的 .aspx 页面(没有母版页)并将 ScriptManager 和 PageMethod 放在那里。它有效吗?如您所见,我正在尝试验证问题在于 ScriptManager 是否位于母版页中。
-
顺便说一句,当您发表评论时,通过输入@username 来提醒该人@Shadow 就足够了,否则除非该人在收藏夹中有问题,否则他/她将不会收到任何通知.
-
@Shadow 我解决了。看来我的方法需要公开而不是保护。我在吠叫,但树错了
-
@Bex 感谢分享.... 仍然觉得整个 PageMethods 未定义很奇怪.. 更有可能的行为是仅针对未公开的特定页面方法未定义。
标签: c# javascript asp.net vb.net