2016-11-12 7 views
0

J'ai passé toute la journée à lutter contre cette erreur et j'ai lu presque tous les articles et essayé tous les indices que j'ai trouvés, mais je n'arrive toujours pas à le faire fonctionner.PageMethods ne fonctionne pas avec l'application web VS2013

S'il vous plaît noter: EnablePageMethod = true à l'intérieur ScriptManager, la méthode est publique et statique et décoré avec [WebMethods]

codage même travaille tout parfait avec VS2010 et avec le projet vide dans VS2013, mais lors de l'utilisation avec Nouveau Project -> web -> formulaires Web la sortie est jointe ici pour votre référence. Error OutPut

Voici mon code.

code Derrière:

[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

Pouvez-vous coller le code-front de la page que vous utilisez? Je veux dire le balisage complet de votre page. – Sunil

Répondre

0

Essayez d'ajouter à la fois [System.Web.Services.WebMethod] et [System.Web.Script.Services.ScriptMethod] à la méthode côté serveur GetCurrentTime.

Assurez-vous également que votre gestionnaire de scripts a EnablePageMethods="True". Votre question indique que vous avez défini EnablePageMethod = true qui est incorrectement orthographié (doit être pluriel).

+0

Essayé les deux mais ne fonctionne toujours pas ..! – BilalAhmed

+0

Essayez d'ouvrir les outils de développement de votre navigateur pour voir quelles erreurs sont enregistrées sur la console. Ajouter les messages d'erreur enregistrés à votre question serait vraiment utile. –

0

Vous devez échouer au gestionnaire d'événements click pour empêcher la publication/l'envoi de page.

Il suffit de retourner faux de votre fonction javascript:

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

Vous devez vous assurer que le bouton ne republier lorsque vous appelez un PageMethod de côté client. Avec votre balisage actuel, il affichera et provoquera des effets inattendus.

Vous devez utiliser le balisage suivant pour le bouton afin qu'il ne soit jamais publié. Ensuite, l'appel à pagemethod devrait fonctionner. Dans le balisage ci-dessous, l'événement de clic sur un bouton renvoie une valeur false, de sorte que la page n'est jamais soumise, c'est-à-dire renvoyée.

En outre, il serait préférable que vous postiez votre balisage de page dans son intégralité, car il peut y avoir un problème avec le balisage.

<input id="btnGetTime" type="button" value="Show Current Time" 
        onclick="ShowCurrentTime();return false;" />