Le propre rappel client d'Asp.Net 2.0,
Asp.Net 2.0, a été publié. 2.0 comporte de nombreuses nouvelles fonctionnalités, et les rappels clients en font partie. Les rappels client nous permettent d'appeler des méthodes côté serveur sans publication. Ils sont cohérents avec les fonctions fournies par AJAX, mais ne sont pas aussi flexibles qu'AJAX peut personnaliser les méthodes d'appel, mais la fonction de rappel fournie avec 2.0 ne le peut pas. Pour utiliser la fonction de rappel client, vous devez implémenter l'interface system.Web.UI.IcallbackEventHandler.
Cette interface contient deux méthodes
//Cette méthode est toujours appelée lorsque le client rappelle
public void RaiseCallbackEvent (String eventArgument)
//Cette méthode sera appelée après l'exécution de RaiseCallbackEvent. La valeur de retour de cette méthode sera renvoyée au client
chaîne publique GetCallbackResult()
exemple:
.cs :
Chaîne cbReference = Page.ClientScript.GetCallbackEventReference(
this, "arg", "ReceiveServerData", "context");
CallbackScript de chaîne ;
callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + "} ;";
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),"CallServer", callbackScript, true);
javascript :
Introduction à AJAX
AJAX n'est pas une nouvelle technologie, mais une combinaison organique de certaines technologies existantes, notamment : XmlHttp, Reflect. Un framework AJAX comprend essentiellement : un HttpHandler personnalisé et un morceau de code JavaScript.
Mécanisme de fonctionnement AJAX
Dans le passé, lorsque nous utilisions XmlHttp pour implémenter une page non actualisée, nous utilisions , la différence est que le HttpHandler de cette page est implémenté par nous-mêmes.
Créez votre propre AJAX :
1. Nous devons d'abord implémenter un gestionnaire Http (HttpHandler) pour répondre aux demandes des clients :
Pour implémenter un HttpHandler personnalisé, vous devez implémenter l'interface IHttpHandler.
L'interface contient une propriété et une méthode :
bool IHttpHandler.IsReusable
void IHttpHandler.ProcessRequest (contexte HttpContext)
Exemple:
bool IHttpHandler.IsReusable
{
obtenir { retourner vrai }
}
void IHttpHandler.ProcessRequest (contexte HttpContext)
{
context.Response.Clear(); //Récupère la méthode à appeler
string methodName = context.Request.QueryString["moi"];
//Obtenir des informations sur l'assembly.
//Czhenq.AJAX.Class1.Dencode est une méthode d'encodage de chaîne personnalisée
string AssemblyName = Czhenq.AJAX.Class1.Dencode(context.Request.QueryString["as"]);
//Obtenir les paramètres de la méthode
string Arguments = context.Request.QueryString["ar"]; // Commencer à appeler la méthode
Tapez type = Type.GetType(AssemblyName);
Méthode MethodInfo = type.GetMethod(methodName,
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
si (méthode != null)
{
//Les paramètres sont séparés par ","
string[] args = Arguments.Split(",".ToCharArray());
ParameterInfo[] paras = method.GetParameters();
argument objet[] = nouvel objet[paras.Length];
pour (int i = 0; i < argument.Length; i++)
{
si (i < args.Length) {
//Comme tous les paramètres passés par XmlHttp sont de type String, ils doivent être convertis
//Ici, nous convertissons uniquement les paramètres en Int32, aucune autre considération n'est prise en compte.
argument[i] = Convert.ToInt32(args[i]);
}
}
valeur de l'objet = method.Invoke(Activator.CreateInstance(type, true), argument);
if (value != null) context.Response.Write(value.ToString());
sinon context.Response.Write("erreur");
}
//Fin du traitement
contexte.Response.End();
Bienvenue sur le forum de la communauté .NET et interagissez avec 2 millions d'employés techniques >> Entrez
2. Code Javascript client :
fonction CallMethod(AssemblyName,MethodName,Argus)
{
var arguments = "";
pour(var je=0;je
args += Argus[i] + ",";
if(args.length>0) args = args.substr(0,args.length-1);
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
url = "AJAX/AJAX.czhenq?as=" + AssemblyName + "&me=" + MethodName +"&ar="+ args;
xmlhttp.open("POST",url,false);
xmlhttp.send();
alerte(xmlhttp.responseText);
}
3. Un framework AJAX simple a été implémenté. Maintenant, écrivez un morceau de code pour tester.
Utilisez votre propre AJAX
1. Créez un nouveau site Web et utilisez le HttpHandler que vous venez d'écrire. Et enregistrez votre HttpHandler dans le Web.config du site Web, en indiquant que ces demandes seront traitées à l'aide du gestionnaire que vous avez écrit. Le contenu suivant explique : Toutes les demandes se terminant par "czq" seront traitées à l'aide de "Czhenq.HttpHandlerFactory".
type="Czhenq.HttpHandlerFactory, Czhenq.AJAX"/>
2. Ajoutez une page Web, copiez le script tout à l'heure sur la page et ajoutez une méthode que vous souhaitez appeler.
chaîne privée Ajouter (int i, int j)
{
renvoyer TextBox1.Text ;
}
3. Placez un contrôle HiddenField sur la page et nommez-le AssemblyName. Et ajoutez le code suivant dans Page_Load :
string assemblyName = Czhenq.AJAX.Class1.Encode(
typeof(_Default).AssemblyQualifiedName);
AssemblyName.Value = assemblyName;
var assemblyName = document.getElementById("AssemblyName"); var argus = new Array();argus.push("100");argus.push("200");CallMethod(assemblyName,"Add",argus)
Pour résumer, AJAX n'est pas une nouvelle technologie. Il s'agit simplement d'une combinaison organique de certaines technologies existantes. Nous pouvons simplement comprendre AJAX comme suit : AjAx est une encapsulation de JavaScript appelant XmlHttp.
Ci-joint l'implémentation d'Encode et Dencode :
chaîne statique publique Encode (valeur de chaîne)
{
octet[] octets = ASCIIEncoding.ASCII.GetBytes(value);
return Convert.ToBase64String(octets);
}
chaîne statique publique Dencode (valeur de chaîne)
{
octet[] octets = Convert.FromBase64String(value);
return ASCIIEncoding.ASCII.GetString(bytes);
}