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) が実行されていません。コントロールをクリックすると、「1 番」というアラートが表示されますが、「2 番」は表示されません (ページ メソッドがコメント アウトされている場合)。 , それはあります). 私が考えることができる唯一のことは、これの原因はスクリプト マネージャーです. それは私が変更したくないものであるこのパッケージのマスター ページで宣言されています. しかし、スクリプト マネージャーが使用されています.スクリプト マネージャーの定義は次のようになります。

  <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

先週この問題が発生しましたが、フォーラムで見つけたもののどれも問題を解決しませんでした. (VS テンプレートから) 新しい Web アプリケーションをセットアップし、いくつかのページをプロジェクトにコピーしました。ページのいくつかは 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 の呼び出しが正常に機能するようになりました。これら 2 つの呼び出しが何をしたかはわかりませんが、現在作業中です。

他の人が問題に遭遇した場合に備えて、これを共有したかっただけです。

于 2014-08-18T12:59:57.660 に答える