我正在设置 PageMethods 以使用 javascript 访问服务器端代码。当我使用 firebug 进行调试时,我收到错误“PageMethods 未定义”。服务器端代码也没有被触发。
我已将我的脚本管理器“EnablePageMethods”设置为 true。我的方法是公共(public)和静态的,它也设置了 WebMethod 属性。我仍然收到上述错误。可能是因为脚本管理器位于具有两个子母版页的顶级母版页中,然后我的页面被调用:
IE。
主母版页(带有脚本管理器)-> 主母版页-> 辅助母版页-> 我的页面-> 我的用户控件(具有 WebMethod)
层次结构是否可能导致此问题?
这是网络方法
[System.Web.Services.WebMethod]
public static void AddNote(string t)
{
int propid = 1;
if (propid > 0)
{
//Call my method
}
}
这是我的 JavaScript 代码:
function editNodes(t) {
alert('test1');
alert(t);
PageMethods.AddNote(t,OnSuccess,OnFailure);
alert('method called');
}
function OnSuccess() {
alert('Success');
if (!navigator.appName == 'Microsoft Internet Explorer') {
window.location.href = window.location.href;
}
}
function OnFailure(error) {
alert('Error:' + error);
}
这就是我所说的:
<a href="#" class="btngeneral" onclick="javascript:editNodes(2);">Save</a>
最佳答案
页面方法在母版页或用户控件中都不起作用。
如果您将方法上移一级到您的页面,它应该可以工作。
从来没有真正能够在这个问题上得到明确的答案。
我怀疑这与 aspx 页面继承自 Page 类和 ascx 控件继承自 UserControl 类的事实有关。至于为什么会这样,我不太确定。
我个人会使用通用处理程序 (.ashx) 页面并通过 javascript 调用它。
关于.net - PageMethods 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818265/