页面方法未定义

发布于 2024-11-04 01:05:56 字数 1108 浏览 7 评论 0原文

我正在设置 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>

I am setting up PageMethods to access server side code using javascript. I am receiving the error "PageMethods is not defined" when i debug using firebug. the server side code is not being fired as well.

I have setup my script manager "EnablePageMethods" to true. My method is public & static and it has the WebMethod attribute set up as well. Still i m receiving the above error. Can it be because of the script manager being in a top level master page which has two child master pages and then my page is called:

i.e.

Main Master Page (with script manager) -> Primary master page -> Secondary master page -> My page -> My User control (having the WebMethod)

Is it possible tht the hierarchy is causing this issue?

This is the webmethod

 [System.Web.Services.WebMethod]
public static void AddNote(string t)
{
    int propid = 1; 
    if (propid > 0)
    {
     //Call my method
    }
}

this is my javascript code:

  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);
}    

this is where I am calling it:

   <a href="#" class="btngeneral" onclick="javascript:editNodes(2);">Save</a>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里的微风 2024-11-11 01:05:56

页面方法在母版页或用户控件中不起作用。

如果您将该方法向上移动一级到您的页面,它应该可以工作。

从来没有真正能够得到这个问题的明确答案。

我怀疑这与 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.

°如果伤别离去 2024-11-11 01:05:56

设置 EnablePageMethods="true"

 <ajaxToolkit:ToolkitScriptManager ID="scriptManager" 
                               runat="server" 
                               AsyncPostBackTimeout="99999999"
                               EnablePageMethods="true" />

我希望这对您有用

set EnablePageMethods="true"

 <ajaxToolkit:ToolkitScriptManager ID="scriptManager" 
                               runat="server" 
                               AsyncPostBackTimeout="99999999"
                               EnablePageMethods="true" />

i hope this will work for you

驱逐舰岛风号 2024-11-11 01:05:56

据我了解,不支持用户控件上的 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文