2009-10-01 9 views
2

Ce peut-être une question très noobish mais je suis en train de mettre en œuvre une méthode web simple en utilisant AJAX C# et asp.net est ici le code:C# AJAX Méthodes Web - Que fais-je de mal?

code C# derrière:

using System.Web.Services; 

public partial class Controls_LeftNavigation : System.Web.UI.UserControl 
{ 
    [WebMethod] 
    public static string MyMethod() 
    { 
     return "Hello"; 
    } 
} 

Page Asp.net:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 
</asp:ScriptManager> 

<script type="text/javascript"> 
      function pageLoad() { 
       var acc = $find('<%= Accordion1.ClientID %>_AccordionExtender'); 
       acc.add_selectedIndexChanging(ClickHandler); 
      } 
      function ClickHandler() { 
       // Do whatever you want. 
       alert('Something is happening!'); 
       alert(PageMethods.MyMethod()); 
      } 
</script> 

Lorsque le bouton de navigation est cliqué, il affiche le message «Quelque chose se passe! boîte de message, mais n'affiche pas l'alerte de méthode de page. J'utilise l'accordéon de la boîte à outils ASP AJAX, ce qui explique pourquoi l'événement de chargement de page ajoute l'événement de gestionnaire de clic à ce contrôle.

+0

Si vous mettez un point d'arrêt dans la méthode Web, est-ce que vous le touchez? – tpower

Répondre

2

PageMéthodes sur les contrôles utilisateur ne sont pas pris en charge.

+1

une enquête plus approfondie montre que votre tout à fait raison et je suis tout autant d'un noob que d'abord pensé :) ty – Morgeh

2

La méthode de page est asynchrone, vous devez fournir un gestionnaire onSuccess comme ceci:

function OnSuccess(result) { 
    alert(result); 
} 

function ClickHandler() { 
    PageMethods.MyMethod(OnSuccess); 
} 

Vous aurez aussi besoin d'empêcher l'événement SelectedIndexChanging de faire un post Retour ou bien la page ne sera pas en mesure de gérer le résultat du retour.

+0

Pourriez-vous donner plus de détails s'il vous plaît? – Morgeh

+0

Toujours pas de joie. Je ne sais pas quel est le problème car il n'y a pas d'erreurs ou d'avertissements. – Morgeh

+0

J'ai mis à jour la réponse pour inclure le code qui fonctionne pour moi. – tpower

Questions connexes