Auteur : Dflying Chen ( http://dflying.cnblogs.com/ )
Les séries d'articles précédentes appellent toutes directement un seul service Web. Cependant, dans le développement de projets réels, en particulier lors de la conversion de projets existants, l'extraction de la logique de la page dans un service Web spécialisé entraîne souvent beaucoup de travail. Atlas prend cela en considération et vous permet d'ajouter l'attribut [WebMethod] à la méthode publique côté serveur pour autoriser les appels directs depuis JavaScript côté client.
Pour permettre aux clients d'appeler directement les méthodes définies dans les pages ASPX, vous devez spécifier la méthode comme publique et ajouter l'attribut [WebMethod], comme la méthode côté serveur suivante définie dans le fichier ASPX :
<script runat="server">
[MéthodeWeb]
public int AddInt (int int1, int int2)
{
retourner int1 + int2 ;
}
</script>
Côté client, Atlas écrasera pour vous une méthode JavaScript AddInt, qui existe dans un espace de noms spécial PageMethods, afin que vous puissiez appeler la méthode ci-dessus via PageMethods.AddInt().
Dans le même temps, en définissant la WebMethod dans la page ASPX, vous pouvez également accéder aux valeurs et au ViewState des contrôles côté serveur sur toutes les pages de cette méthode, et le cycle de vie de la page entière sera le même que la page ASP.NET traditionnelle PostBack, telle que Page_Load Toutes les autres méthodes seront appelées, nous permettant d'avoir un accès plus fort à la page. Cependant, cela entraîne également une réduction des performances, car chaque fois que la méthode Web est appelée, les valeurs ViewState et de contrôle sur la page seront renvoyées au serveur, et le traitement côté serveur de l'ensemble du cycle de vie de la page sera plus long que le simple traitement d'une méthode Web pure définie dans ASMX est beaucoup plus compliquée. Je recommande donc ici d'utiliser autant que possible un service Web pur. Veuillez vous référer à : Il est recommandé d'utiliser le service Web au lieu de la méthode Page dans l'implémentation côté serveur Atlas.
Regardons un exemple. Tout d'abord, définissons la WebMethod dans ASPX. Vous pouvez voir qu'elle trouve non seulement la somme de deux nombres, mais accède également à la valeur du TextBox côté serveur sur une page :
<script runat="server. ">
[MéthodeWeb]
chaîne publique AddInt (int int1, int int2)
{
return (int1 + int2).ToString() + string.Format("rnEt le texte de la TextBox du serveur est '{0}'.", tbServer.Text);
}
</script>
Ensuite, il y a le ScriptManager de la page. Il n'est pas nécessaire d'ajouter de références ici : <atlas:ScriptManager ID="scriptManager" runat="server" />.
Ensuite, il y a deux entrées utilisées pour saisir l'addend et une entrée utilisée pour déclencher l'appel du serveur :
<input id="value1" type="text" value="1" />
<input id="value2" type="text" value="2" />
<input id="btnAdd" type="button" value="Add!" onclick="return btnAdd_onclick()" />
Il existe également une TextBox côté serveur :
<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
Le dernier est l'appel JavaScript. Faites attention à l'espace de noms intégré de PageMethods :
function btnAdd_onclick() {.
PageMethods.AddInt(
$('valeur1').valeur,
$('valeur2').valeur,
SurComplet
);
}
fonctionOnComplete (résultat)
{
alerte (résultat);
}
Exécutez-le dans le navigateur, entrez deux ajouts, puis entrez quelques caractères dans la TextBox côté serveur, cliquez sur Ajouter, vous pouvez voir que la valeur de la TextBox côté serveur a été accédée :
Il s'agit de la transmission réseau interceptée par Fiddler. Vous pouvez voir que ViewState et TextBox sont renvoyés au serveur :
Le code source de cet exemple de programme peut être téléchargé ici :