页面方法未定义
我正在设置 PageMethods 以使用 javascript 访问服务器端代码。当我使用 firebug 进行调试时,收到错误“PageMethods 未定义”。服务器端代码也没有被触发。
我已将脚本管理器“EnablePageMethods”设置为 true。我的方法是 public &静态并且它还设置了 WebMethod 属性。我仍然收到上述错误。是否是因为脚本管理器位于具有两个子母版页的顶级母版页中,然后调用我的页面:
即
主母版页(带有脚本管理器)->主母版页 ->二级母版页->我的页面->我的用户控件(具有 WebMethod)
是否可能是层次结构导致了此问题?
这是 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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
页面方法在母版页或用户控件中不起作用。
如果您将该方法向上移动一级到您的页面,它应该可以工作。
从来没有真正能够得到这个问题的明确答案。
我怀疑这与 aspx 页面继承自 Page 类而 ascx 控件继承自 UserControl 类这一事实有关。至于为什么我不太确定。
就我个人而言,我会使用通用处理程序 (.ashx) 页面并通过 javascript 调用它。
Page Methods don't work in either Master Pages or User Controls.
If you move the method up one level to you page it should work.
Never really been able to get a definitive answer on this one.
I suspect it has do with the fact that aspx pages inherit from the Page class and the ascx controls inherit from the UserControl class. As to why of that I am not too sure.
Personally I would use a generic handler (.ashx) page and call that through javascript.
设置 EnablePageMethods="true"
我希望这对您有用
set EnablePageMethods="true"
i hope this will work for you
据我了解,不支持用户控件上的 PageMethods,并且下面的线程似乎确认
http ://forums.asp.net/p/977525/1242935.aspx
来自 UserControl 的 ASP.NET AJAX 页面方法
但我认为可能有一个解决方法(不确定这在您的场景中是否有效)。您可以在页面的代码中编写 OneLine PageMethod,在其后面调用 Controls Page 方法。现在您可以从 aspx 调用页面的方法,一切准备就绪。
或者你可以使用这个替代方案
在用户控件asp中使用页面方法的替代方法.net
As far as I understand, PageMethods on usercontrol is not supported and threads below seem to confirm that
http://forums.asp.net/p/977525/1242935.aspx
ASP.NET AJAX Page Methods from UserControl
But I think there could be a workaround (not sure if that's efficient in your scenario). You can write a OneLine PageMethod in page's code behind which would intern call the Controls Page method. Now you can invoke your page's method from aspx and all set to go.
Or you may use ths alternative
Alternate way to use page method inside user control asp.net