我正在设置PageMethods以使用javascript访问服务器端代码。当我使用firebug进行调试时,我收到错误消息"PageMethods is not defined“。服务器端的代码也没有被触发。
我已经将我的脚本管理器"EnablePageMethods“设置为true。我的方法是公共的&静态的,并且还设置了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>发布于 2011-04-28 20:52:54
页面方法在母版页或用户控件中都不起作用。
如果你将这个方法上移到你的页面上,它应该可以工作。
在这个问题上,我从来没有真正得到一个明确的答案。
我怀疑这与aspx页面继承自Page类,而aspx控件继承自UserControl类有关。至于为什么会这样,我不太确定。
就我个人而言,我会使用通用处理程序(.ashx)页面,并通过javascript调用它。
发布于 2012-06-08 19:18:43
将EnablePageMethods=设置为“true”
<ajaxToolkit:ToolkitScriptManager ID="scriptManager"
runat="server"
AsyncPostBackTimeout="99999999"
EnablePageMethods="true" />我希望这对你有用。
发布于 2011-04-28 20:49:09
据我所知,usercontrol上的PageMethods不受支持,下面的线程似乎证实了
http://forums.asp.net/p/977525/1242935.aspx
ASP.NET AJAX Page Methods from UserControl
但我认为可以有一个变通方法(不确定这在您的场景中是否有效)。您可以在页面的代码中编写一个OneLine PageMethod,在该代码背后将实际调用控件的页面方法。现在,您可以从aspx调用页面的方法,一切准备就绪。
或者,您也可以使用此替代Alternate way to use page method inside user control asp.net
https://stackoverflow.com/questions/5818265
复制相似问题