我正在尝试改进 SharePoint 2010 网站,但在调用 PageMethod 时遇到了困难。这是我试图执行的脚本:
<script type="text/javascript">
function BindingTitle() {
alert("number one");
PageMethods.BindTitle(OnSucceeded, OnFailed);
alert("number two");
}
function OnSucceeded(result, userContext, methodName) {
alert("it worked!");
}
function OnFailed(error, userContext, methodName) {
alert("it didn't work!");
alert(error);
}
</script>
绑定到脚本的控件在一个表中,但为了简洁起见,它看起来像这样:
<table>
<thead>
<tr>
<th onclick="BindingTitle()"> alsdjlfajlskdjfla</th> //this is the control
</tr>
</thead>
</table>
放在后面代码中的 web 方法如下所示:
[WebMethod()]
public static void BindTitle()
{
Console.WriteLine("things are happening");
}
脚本中的行“PageMethods.BindTitle(OnSucceeded, OnFailed) 未执行。单击控件时,显示“第一”的警报,但“第二”从未显示(当页面方法被注释掉时,确实如此)。我能想到的唯一可能是脚本管理器的原因。它在此包的母版页中声明,这是我不想更改的内容。但是使用了脚本管理器对于很多不同的事情,我对网络开发的复杂性还不够熟悉,无法知道这对我的页面有何影响。脚本管理器的定义如下所示:
<asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="true" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" />
有没有一种方法可以在我的页面上禁用这个脚本管理器,这样我就可以声明自己的更简单的了?还应该注意的是,这是一个相当大的站点,其中有几个页面依赖于先前声明的脚本管理器。这些网站的大部分代码都非常混乱,并且是由不再为这家公司工作的人编写的。我这样说只是为了澄清一些会影响其他页面的更改在我有空的情况下是不可行的,因为在这样的更改之后需要进行大量的测试和调试。
如果我遗漏了什么,请告诉我!谢谢!