2016-11-12 3 views
0

私はこのエラーに苦しんで一日中苦労し、ほとんどすべての記事を読んで、私が見つけたすべてのヒントを試しましたが、それでも動作させることはできませんでした。PageMethods VS2013 Webアプリケーションで動作しません

注意してください:のScriptManager内部の真EnablePageMethod =を、メソッドはパブリックと静的および[WebMethodの]

同じ符号化は、VS2013でのすべてのVS2010と完璧な空のプロジェクトでの作業が、新で使用している場合さで飾られていますプロジェクト - >ウェブ - >ウェブフォーム出力はあなたの参照のためにここに添付されています。 Error OutPut

ここは私のコードです。

コードの後ろ:

[System.Web.Services.WebMethod] 
     public static string GetCurrentTime(string name) 
     { 
      return "Hello " + name + Environment.NewLine + "The Current Time is: " 
       + DateTime.Now.ToString(); 
     } 

はJavaScript:

<script type="text/javascript"> 
     function ShowCurrentTime() { 
      PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess); 
      } 
      function OnSuccess(response, userContext, methodName) { 
       alert(response); 
      } 
    </script> 

HTML:

<div> 
     Your Name : 
      <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
     <input id="btnGetTime" type="button" value="Show Current Time" onclick="ShowCurrentTime()" /> 
    </div> 
+0

使用しているページのコードフロントを貼り付けることはできますか?あなたのページの完全なマークアップを意味します。 – Sunil

答えて

0

[System.Web.Services.WebMethod][System.Web.Script.Services.ScriptMethod]の両方をサーバ側に追加してみてくださいGetCurrentTimeメソッド。

また、スクリプトマネージャーにEnablePageMethods="True"があることを確認してください。あなたの質問には、EnablePageMethod = trueという綴りが間違っています(複数にする必要があります)と設定されています。

+0

両者を試してみましたが、まだ動作していません。 – BilalAhmed

+0

ブラウザの開発者ツールを開いて、コンソールに記録されているエラーを確認してください。あなたの質問に記録されたエラーメッセージを追加することは本当に助けになります。 –

0

ポストバック/ページ送信を防ぐには、クリックイベントハンドラに失敗する必要があります。

ちょうどあなたのjavascript関数からfalseを返す:

function ShowCurrentTime() { 
    PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess); 
    return false; // added 
} 
0

あなたは、クライアント側からPageMethodを呼び出すときに、ボタンがポストバックしないことを確認する必要があります。あなたの現在のマークアップでは、それはポストバックし、予期しない結果を引き起こします。

ボタンには次のマークアップを使用する必要があります。 pagemethodの呼び出しがうまくいくはずです。下のマークアップでは、ボタンクリックイベントはfalse値を返すため、ページは決して送信されません。つまり、ポストバックされます。

また、マークアップに問題がある可能性があるため、ページマークアップを完全に投稿するとよいでしょう。

<input id="btnGetTime" type="button" value="Show Current Time" 
        onclick="ShowCurrentTime();return false;" /> 
関連する問題