Implémentation de rappel de client (Visual Basic), exemple
Mise à jour : novembre 2007
Montre une page Web ASP.NET qui implémente un rappel client. Pour plus d'informations, consultez Implémentation par programme des rappels clients sans publication (postback) dans des pages Web ASP.NET.
Exemple
Description
L'exemple de code suivant se présente en deux parties. La première partie montre une page Web ASP.NET (la page .aspx). La deuxième partie montre le fichier code-behind correspondant (le fichier .aspx.vb).
Code
<%@ Page Language="VB" AutoEventWireup="true"
CodeFile="ClientCallback.aspx.vb" Inherits="ClientCallback" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
<title>Client Callback Example</title>
<script type="text/javascript">
function LookUpStock()
{
var lb = document.getElementById("ListBox1");
var product = lb.options[lb.selectedIndex].text;
CallServer(product, "");
}
function ReceiveServerData(rValue)
{
document.getElementById("ResultsSpan").innerHTML = rValue;
}
</script>
</head>
<body>
<form id="form1" >
<div>
<asp:ListBox ID="ListBox1" Runat="server"></asp:ListBox>
<br />
<br />
<button type="Button" onclick="LookUpStock()">Look Up Stock</button>
<br />
<br />
Items in stock: <span id="ResultsSpan" ></span>
<br />
</div>
</form>
</body>
</html>
Partial Class ClientCallback
Inherits System.Web.UI.Page
Implements System.Web.UI.ICallbackEventHandler
Protected catalog As ListDictionary
Protected returnValue As String
Sub Page_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Me.Load
Dim cbReference As String
cbReference = Page.ClientScript.GetCallbackEventReference(Me, _
"arg", "ReceiveServerData", "context")
Dim callbackScript As String = ""
callbackScript &= "function CallServer(arg, context) { " & _
cbReference & "} ;"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), _
"CallServer", callbackScript, True)
' Populate List Dictionary with invented database data
catalog = New ListDictionary()
catalog.Add("monitor", 12)
catalog.Add("laptop", 10)
catalog.Add("keyboard", 23)
catalog.Add("mouse", 17)
ListBox1.DataSource = catalog
ListBox1.DataTextField = "key"
ListBox1.DataBind()
End Sub
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
If catalog(eventArgument) Is Nothing Then
returnValue = "-1"
Else
returnValue = catalog(eventArgument).ToString()
End If
End Sub
Public Function GetCallbackResult() _
As String Implements _
System.Web.UI.ICallbackEventHandler.GetCallbackResult
Return returnValue
End Function
End Class
Commentaires
La page Web émule une consultation de base de données afin de déterminer le nombre d'articles disponibles, ou en réserve, pour une série de produits (écrans, claviers, etc.). Pour simplifier cet exemple de code, la base de données est représentée par une liste de dictionnaire qui contient un petit jeu d'articles. La clé de chacun des articles de la table est le nom de l'article (par exemple, écran), et sa valeur est le nombre d'articles en réserve. Dans une application de production, on utiliserait plutôt une base de données.
Lorsque la page s'exécute, un contrôle ListBox est lié à la table de hachage afin que le contrôle ListBox affiche la liste des produits. La page contient également un élément button (et non un contrôle serveur Web de bouton) dont l'événement onclick est lié à une fonction cliente nommée LookUpStock. Lorsque les utilisateurs cliquent sur le bouton, ce dernier exécute la fonction LookUpStock, ce qui récupère la sélection actuelle depuis la zone de liste, puis exécute le rappel client en appelant la fonction CallServer.
La page code-behind ajoute à la page le script côté client via la méthode RegisterClientScriptBlock. Le script ajouté à la page comprend une fonction nommée CallServer, laquelle obtient le nom de la méthode qui publiera sur le serveur à partir de la méthode GetCallbackEventReference.
Le rappel client appelle la méthode RaiseCallbackEvent, qui détermine la réserve disponible du produit qui lui a été passé. La méthode GetCallbackResult retourne la valeur. Notez que les arguments échangés entre le script client et le code serveur ne peuvent être que des chaînes. Pour passer ou recevoir plusieurs valeurs, vous pouvez concaténer des valeurs respectivement dans la chaîne d'entrée ou de retour.
Note de sécurité : |
---|
Lorsque vous utilisez cette fonctionnalité, sachez qu'elle représente une menace pour la sécurité. Les arguments de rappel ne sont pas validés et doivent donc être considérés comme potentiellement dangereux. Vous devez toujours vérifier le contenu des arguments avant de les utiliser. Pour plus d'informations, consultez Vue d'ensemble des attaques de script. |
Voir aussi
Tâches
Comment : implémenter des rappels dans des pages Web ASP.NET