1

我正在尝试改进 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" />

有没有一种方法可以在我的页面上禁用这个脚本管理器,这样我就可以声明自己的更简单的了?还应该注意的是,这是一个相当大的站点,其中有几个页面依赖于先前声明的脚本管理器。这些网站的大部分代码都非常混乱,并且是由不再为这家公司工作的人编写的。我这样说只是为了澄清一些会影响其他页面的更改在我有空的情况下是不可行的,因为在这样的更改之后需要进行大量的测试和调试。

如果我遗漏了什么,请告诉我!谢谢!

4

2 回答 2

1

我试过你的代码,它运行良好。但是,当我将ScriptManagers EnablePageMethods属性更改为 时false,它开始按照您描述的方式运行,即它执行第一个警报并停在那里。确保该属性未在代码中的任何位置设置为 false。

于 2012-07-24T14:17:11.813 回答
0

上周我遇到了这个问题,我在论坛上找到的东西都没有解决这个问题。我已经设置了一个新的 Web 应用程序(来自 VS 模板),然后将几个页面复制到项目中。有几个页面使用了 PageMethods。这些页面都在旧项目中工作。但是,调用 PageMethods 的 jscript 代码在新项目中不起作用。jscript 被击中,但它的行为就像 PageMethod 没有被击中一样。我在 PageMethod 代码中设置了断点,它从未被命中。(我在旧项目中验证了断点确实命中。)返回也达到了“成功”的 jscript 方法,但没有返回任何其他内容。

我最终发现新模板在 Global.asax.cs 文件中有几个我不认识的调用。

        // Code that runs on application startup
        //RouteConfig.RegisterRoutes(RouteTable.Routes);
        //BundleConfig.RegisterBundles(BundleTable.Bundles);

注释掉 RouteConfig 和 BundleConfig 调用允许 PageMethod 调用正常工作。我不确定这两个电话做了什么,但我现在正在工作。

只是想分享这个,以防其他人遇到问题。

于 2014-08-18T12:59:57.660 回答