[Remarque : ce paragraphe n'a rien à voir avec le contenu du titre et peut être ignoré] Après avoir regardé deux épisodes de Stargate et pris une douche, j'ai finalement décidé de commencer à écrire cet article. Il s'agit de mon premier article technique vraiment original. Quel que soit le contenu technique, j'ai finalement franchi cette étape. En fait, j'ai ouvert de nombreux blogs, depuis le premier bus du campus jusqu'au Blog Park, en passant par mon blog Sina pour me plaindre. En fait, le but initial de la création d'un blog était d'enregistrer mon processus d'apprentissage tout en écrivant des programmes. Mais plus tard, cela a évolué vers une sorte de plainte. Cela peut être considéré comme la conséquence de mon incapacité à me concentrer sur mes études. Cependant, comme le dit le proverbe, il n'est pas trop tard pour résoudre le problème. À partir de cet article, je vais le devenir. plus concentré et plus concentré. Guidé par cette réflexion ciblée, j'ai finalement recommencé à écrire des programmes correctement récemment. Cette fois, j'ai vraiment abandonné les choses que je ne voulais pas faire et je me suis concentré sur l'écriture du code C# que j'aime dans le langage de programmation que je connais, I My. les favoris sont C# et Javascript. Ce dernier est un langage de script, pour être précis, je n'en suis tombé amoureux que récemment. Au départ, je pensais que c'était comme le Basic auquel je jouais quand j'étais enfant, petit et simple, mais il se révèle. Il semble que, bien qu'il s'agisse également d'un langage de script comme VBS, il y a en fait plus de contenu caché sous l'apparence du langage C. Je vais peut-être écrire un autre article pour le décrire. .Je l'aime. Plate-forme .NET, je ne sais pas pourquoi, lorsque j'ai utilisé le langage C# pour la première fois en 2001, je l'ai trouvé très beau, puis j'en suis tombé amoureux, cependant, à cause de problèmes environnementaux. cette fois-là, il a été interrompu pendant un certain temps jusqu'en 2004. , je l'ai repris, mais pendant plus d'un an, je me contentais de tirer des tas de commandes, puis de les ajuster dans le panneau des propriétés. Il semblait que j'avais oublié quoi. à quoi ressemblait le Web à l'origine, et puis finalement Il y a quelque chose qui a changé mes souvenirs ---- Ajax.
Les frameworks de développement Ajax sont partout. En fait, lors de la sortie d'ASP.NET 2.0, un contenu similaire a été intégré en interne. Il est utilisé dans certains contrôles de données tels que GridView dans un article de MSDN Magazine de janvier 2005, " Custom Script Callback in ". ASP.NET" (version chinoise | anglais) m'a fait réaliser le charme des appels asynchrones dans asp.net (la méthode d'implémentation est limitée à la version beta1, à propos de la partie de rappel du script beta1, beta2 et la version officielle Ils sont différents du temps à l'époque. Ceux qui sont intéressés peuvent se référer au contenu MSDN récemment publié), mais je viens de jouer avec. Plus tard, j'ai utilisé Atlas, donc je n'y ai pas prêté beaucoup d'attention. J'ai discuté d'ASP avec moi il y a quelque temps. Lors de l'implémentation d'Ajax dans .net, j'ai mentionné que l'implémentation d'Atlas était trop lourde et que ce qu'il voulait implémenter n'était que quelques très petits contenus qui n'avaient pas besoin d'être si compliqués depuis. Je ne connais pas le framework ajax de .NET autre que ceux-ci, je me suis naturellement souvenu du mécanisme de rappel de script intégré. En utilisant le projet d'un ami (avec son propre consentement), nous avons écrit beaucoup de code à ce sujet après l'avoir écrit. , j'ai soudainement découvert un problème, c'est-à-dire que le code était trop compliqué. Chaque page est similaire et un seul paramètre de chaîne peut être transmis. En plus de l'interaction, nous devons utiliser des cadres en ligne pour afficher certaines données coûteuses. Il y a deux jours, je suis allé à Haïti et j'ai acheté un livre "Ajax Advanced Language Programming". Après en avoir lu une partie, j'ai soudain voulu comprendre comment implémenter le rappel de script dans asp.net 2.0 ? En fait, en regardant en arrière, de nombreux endroits de l'article « Rappel de script personnalisé dans ASP.NET » ont été expliqués très clairement. On peut dire qu'à l'époque, beaucoup de choses étaient dans les nuages et que les utilisateurs ne pouvaient en voir que l'effet. . Je publierai d'abord ce que je pense être la mise en œuvre la plus simple, puis je l'analyserai.
Créez une nouvelle page Default.aspx, ajoutez un contrôle CheckBox sur la page, puis ouvrez le fichier Default.aspx.cs. La classe _Default ajoute trois interfaces héritées, ICallbackContainer, ICallbackEventHandler et INamingContainer :
[Code 1]
#region ICallbackContainer member.
chaîne publique GetCallbackScript (IButtonControl buttonControl, argument de chaîne)
{
throw new Exception("La méthode ou l'opération n'est pas implémentée.");
}
#endregion
#region Membres d'ICallbackEventHandler
chaîne temp ;
chaîne publique GetCallbackResult()
{
//lance une nouvelle exception("Exemple d'erreur");
température de retour ;
}
public void RaiseCallbackEvent (string eventArgument)
{
temp = "_____" + eventArgument + " est un succès._____";
}
#endregion
Accédez à la méthode Page_Load de la page Default.aspx.cs et ajoutez le code suivant :
[Code 2]
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
string temp = Page.ClientScript.GetCallbackEventReference(this, "arg", "Callback", "context", "OnError", true);
string script = "function CallServer(arg,context){" + temp + "}" ;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "abc", script, true);
CheckBox1.Attributes.Add("onclick", "CallServer('J'appelle le serveur ','context');");
}
Après avoir modifié le code CS, ouvrez le fichier Default.aspx et ajoutez le code suivant entre <head>...</head> :
[Code 3]
<script type="text/javascript">
fonction OnError (erreur, contexte)
{
alerte (erreur);
}
fonction Callback(arg,context)
{
alerte(argument);
}
</script>
Le contrôle CheckBox ici peut être affiché avec désinvolture et modifié si nécessaire. Cependant, vous souhaiterez peut-être faire attention lorsque vous utilisez le contrôle Button. Il activera l'événement OnSubmit par défaut, vous devrez donc peut-être le configurer ou utiliser le contrôle. Contrôle HTML directement. Le code ci-dessus peut être considéré comme une implémentation minimale du rappel de script, et ils sont tous nécessaires.
Les contrôles qui utilisent des rappels de base doivent implémenter trois interfaces : ICallbackContainer, INamingContainer et ICallbackEventHandler. En fait, INamingContainer n'a pas de contenu d'interface à implémenter. Il « identifie simplement le contrôle conteneur qui crée un nouvel espace de noms ID dans la hiérarchie de contrôle de l'objet Page » (cité par MSDN). Quant à l'interface ICallbackContainer, l'explication donnée dans MSDN (version chinoise) est relativement vague. Certains articles connexes présentent également des rappels de script et des interfaces ICallbackEventHandler. Parce que nous utilisons ici les pages comme base pour les rappels, nous n'utilisons pas cette méthode pour. être implémenté par l'interface est GetCallbackScript, mais si vous encapsulez votre propre contrôle Ajax, cette méthode est très utile Ici, nous utilisons simplement la méthode implémentée par ICallbackEventHandler pour traiter les données, car dans la méthode Page_Load j'ai enregistré une méthode CallServer, puis Déclenché sur l'événement OnClick attaché au CheckBox, afin que nous puissions comprendre un processus d'appel plus clair.
Plus tard [Code 3] J'ai implémenté deux méthodes Javascript, l'une est utilisée pour gérer les erreurs d'appel et l'autre est utilisée pour gérer les informations de retour une fois l'appel réussi. Dans [Code 1], il y a un morceau de code qui lève une exception que j'ai commentée. Grâce à ce code, je peux simuler l'appel de la méthode OnError.
Jusqu'ici, nous avons vu comment implémenter cet appel. Pour parler franchement, il s'agit en fait d'une manière relativement avancée de faire glisser des contrôles, mais comment est-il implémenté ? Pourquoi est-ce que je ne vois rien à propos de XmlHttpRequest ? (Je crois fermement que c'est la meilleure façon d'implémenter Ajax, car ce code peut être utilisé sur n'importe quel navigateur prenant en charge Javascript. Je pense que cela n'a rien à voir avec la porte secrète)
Compiler, exécuter......
En cliquant sur la case à cocher sur la page en cours d'exécution, "___J'appelle le serveur a réussi.___". Comment cela est-il exécuté ? En fait, cliquez simplement sur "Afficher le code source" sur cette page. Il y a un petit secret caché ici. Trois blocs de script sont automatiquement générés sur la page. L'un est __doPostback, qui est utilisé pour gérer la publication des événements de contrôle du serveur. est la méthode CallSerer que nous venons d'enregistrer à l'aide de ClientScript, et il existe également une balise de lien pour un script externe. L'URL à laquelle elle se connecte est :
<script src="/TechTest/WebResource.axd?d=DE9YrizlDDq8OUlo_3rQgA2&t=632919546726295408" type="text/javascript"></script>
Ouvrez l'adresse en fonction de l'adresse indiquée par le SRC ci-dessus, et vous pourrez obtenir un Fichier WebResource.axd (remplissez l'adresse de connexion dans un outil de téléchargement tel que Thunder et vous pourrez le télécharger. Lorsque vous l'ouvrez, vous pouvez voir que ce fichier contient en fait du code Javascript :
essayez
).
{
xmlRequest = nouveau XMLHttpRequest();
}
attraper(e)
{
essayer
{
xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
attraper(e)
{
}
}
Le code semble si familier !
si (!useAsync)
{
si (__synchronousCallBackIndex != -1)
{
__endingCallbacks[__synchronousCallBackIndex] = null ;
}
__synchronousCallBackIndex = callbackIndex ;
}
À l'intérieur de ça ? N'est-ce pas ce qui gère l'option d'appel asynchrone dans la méthode Page.ClientScript.GetCallbackEventReference ?
Il contient de nombreux codes utiles. Je fais des recherches.........................
Il existe de nombreuses méthodes en plus de celles-ci. Pour le dire franchement, c'est un Ajax très simple. L'encapsulation du framework comprend le traitement des événements de contrôle et le traitement des demandes de publication sur cette base, afin qu'il puisse être directement encapsulé dans un simple contrôle .NET Ajax en tant que composant de . NET pendant le développement. Solution légère.
En fait, les technologies Java, .NET ou PHP sont toutes des encapsulations avancées de HTTP côté serveur, tout comme la technologie CGI que nous utilisions il y a longtemps, et maintenant la technologie du Web est plus avancée et comprend quand il s'agit de le mécanisme de fonctionnement interne de .NET, nous pouvons rompre avec certaines restrictions et réécrire nous-mêmes certaines pages ou contrôles pour créer notre propre environnement de développement Ajax.
J'étais ingénieur de contrôle. Je pense que l'encapsulation est une technologie nécessaire à l'ère des grandes usines. Cependant, les programmeurs doivent encore approfondir et vraiment comprendre le contenu derrière le fonctionnement du programme afin de pouvoir mieux développer des produits de haute qualité. produits.