Aujourd'hui je prends ma casquette "développeur Web capable de faire un peu de Javascript" ... pour vous faire découvrir les "PageMethods"

A quoi ça sert : tout simplement à exécuter du code serveur, côté client . Un simple appel javascript va permettre d'exécuter du code serveur (Enregistrement en base de données ou autres ...). Ceci permet simplement de réaliser des opérations côté serveur sans postback ... exactement le principe d'AJAX.

Pour cela 1ère étape : Activer les PageMethods sur le ScriptManager de votre page :

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

Seconde étape : Marquer le code serveur que vous souhaitez exécuter.
La méthode doit :

  • être implémentée directement dans la page (pas dans un user control par exemple)
  • être statique
  • être marquée avec les attributs qui vont bien ...

[System.Web.Script.Services.ScriptMethod]
[System.Web.Services.
WebMethod]
public static void MakeSomeJob(string arg1, string arg2){
       .......
}

Troisième étape (La plus dure pour la plupart d'entre nous) : Le javascript 

Comme pour le code serveur, je vous incite à mettre le javascript dans la page et non dans un user control composant la page
La raison : Visual Studio 2008 permet désormais de débugger du code Javascript ... mais seulement lorsqu'il est dans une page ASPX

L'appel se fait à l'aide du mot clé "PageMethods", par exemple :

<script type="text/javascript">

function MakeCodeClient(arg1,arg2) {
    PageMethods.MakeSomeJob(arg1, arg2, MakeSomeJobSuccessCallback, MakeSomeJobFailedCallback);
}

function MakeSomeJobSuccessCallback(res, destCtrl) {
    alert('Cool ça a marché');
}

function MakeSomeJobFailedCallback(res, destCtrl) {
    alert('Zut ... ça n a pas marché');
}
</script>

Remarquez la présence des deux méthodes de callback permettant de gérer le succès ou l'échec de l'appel.
Rien ne vous empêche de réagir sur le succès de la méthode en récupérant un éventuel retour de la méthode et de mettre à jour une zone de votre page "à la façon Ajax"...


Amusez vous bien ... Le web n'est pas forcément votre ennemi ...

Yoann Vue