Utilisation des ressources Web dans ASP.NET 2.0

Numéro d'article: 910442 - Voir les produits auxquels s'applique cet article
Colonne vocale d'assistance ASP.NET

Utilisation des ressources Web dans ASP.NET 2.0

Pour personnaliser cette colonne à vos besoins, nous souhaitons vous inviter à soumettre vos idées sur les sujets qui vous intéressent et problèmes que vous souhaitez voir traités dans de futurs articles de la Base de connaissances et des colonnes Support Voice. Vous pouvez soumettre vos idées et commentaires à l'aide de la Demandez-le . Il existe également un lien vers le formulaire au bas de cette colonne.
Agrandir tout | Réduire tout

Sommaire

Introduction

Bonjour ! Mon nom est Praveen Yerneni et je suis une travail responsable technique avec le groupe de prise en charge ASP.NET chez Microsoft. Dans l'article de mois-ci ce, je vais pour discuter des ressources Web et comment les implémenter dans votre application.

Si vous êtes un développeur qui travaille de manière intensive avec COM contrôles, vous pouvez trouver cet article utile dans adressage quelques-unes des principales problèmes que vous pouvez rencontrer lors du développement de contrôles. Auparavant, dans Microsoft ASP.NET 1.1, si vous souhaitez déployer les fichiers statiques tels que les fichiers .html, .css fichiers, les fichiers image et les fichiers de script à l'aide d'un contrôle COM, vous deviez créer un programme d'installation et d'une offre groupée ces fichiers ainsi que de la COM de contrôle. Bien que Cela a fonctionné, il présente de nombreux problèmes lors du déploiement du contrôle. Pour exemple, vous disposiez des problèmes de conflits de version, avec assurant que les fichiers tels que les images ont été déployés sur le même emplacement ou avec endommagé ou suppression des fichiers statiques qui pourraient provoquer l'échec du contrôle.

Web Ressources dans Microsoft ASP.NET 2.0 résout ces problèmes en vous permettant du développeur incorporer ces ressources dans l'assembly en tant que .resources. Pour accéder à ces ressources statiques, vous pouvez simplement appeler une méthode dans le contrôle code.

Comment fonctionnent les ressources Web

Ressources Web se fier à un gestionnaire spécial nommé WebResource.axd, qui est conçu pour récupérer des ressources de l'assembly et servir leur navigateur Web. Le type de gestionnaire de WebResource.axd est AssemblyResourceLoader.

Lorsqu'une demande arrive à partir du client pour WebResource.axd, le gestionnaire recherche l'identificateur de ressource Web dans la méthode QueryString de l'objet Request . Selon la valeur de l'identificateur de ressource Web, le Gestionnaire essaie de charger l'assembly qui contient cette ressource. Si ce opération est réussie, le gestionnaire recherche ensuite l'attribut d'assembly et charger le flux de ressources à partir de l'assembly. Enfin, le gestionnaire s'emparer les données à partir de la ressource de flux et l'envoyer au client avec le type de contenu que vous spécifiez dans l'attribut d'assembly.

L'URL pour WebResource.axd ressemble à ceci :
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Le format de cette URL est WebResource.axd?d=crypté identificateur& t =cachet. Le « d » signifie la ressource Web demandée. Le « t » est l'horodatage de la assembly demandé, ce qui peut vous aider à déterminer s'il y a aucune modifications à la ressource.

Plonger dans le code

Dans mon exemple, j'ai développé un contrôle COM qui est consommé par une application Web ASP.NET pour illustrer cette nouvelle fonctionnalité.

Contrôle de COM pour la ressource Web

Pour la création et l'incorporation d'une ressource Web, j'ai développé une COM contrôle (SimpleControl). Il a les ressources incorporées suivantes :
  • Deux fichiers nommés smallFail.gif d'image et smallSuccess.gif. ces fichiers image sont utilisés pour les effets de substitution dans le contrôle et qui sont consommés dans le code de contrôle.
  • Un fichier HTML nommé Help.htm. Ce fichier n'existe pas contiennent la quantité de texte et est seulement pour la démonstration.
  • Un seul fichier JavaScript nommé MyScript.js. Ce fichier contient du code JavaScript qui montre également la fonctionnalité de substitution Pour obtenir une référence à une autre ressource incorporée dans le même assembly.
  • Un seul fichier .css est nommé MyStyleSheet.css. Ce style feuille est ensuite consommé directement à partir de l'application Web ASP.NET.
Dans cet article, j'aborderai les parties qui sont nécessaires pour Ressources Web.
Incorporer des ressources Web
Vous devez d'abord vous assurer que tous les fichiers statiques sont ajouté à la bibliothèque de contrôles Web sont de projet dans Microsoft Visual Studio 2005 ressources incorporées. Pour incorporer ces ressources, tout ce que vous avez à faire est d'ajouter Ces fichiers dans Visual Studio, puis modifiez les propriétés de ces fichiers ainsi que l'action de génération a la valeur Incorporé Ressource.

Après cela, vous devez aussi rendre assurer que ces ressources ont été référencés par l'attribut d'assembly dans le fichier AssemblyInfo.cs WebResource , comme indiqué ci-dessous.
[assembly: WebResource("SimpleControl.Help.htm", "text/html")]
[assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]

L'attribut d'assembly WebResource a trois paramètres comme suit :
  • Ressource Web: le nom de la ressource est incorporée dans l'assembly
  • ContentType: type de fichier le MIME de la ressource
  • PerformSubstitution: une valeur booléenne qui détermine si autres URL de la ressource Web qui sont référencés dans cette ressource sont analysées et remplacées par le chemin complet de la ressource
L'extraction de ressources Web
Pour l'obtention de la ressource Web, j'ai utilisé la méthode GetWebResourceUrl , qui est une méthode de la classe ClientScriptManager qui est généralement utilisée pour gérer des scripts côté client. Cette méthode retourne une référence URL à la ressource côté serveur incorporé dans un assembly. La méthode GetWebResourceUrl accepte deux paramètres suivants :
  • Type: le type de la ressource côté serveur
  • Nom de la ressource: le nom de la ressource côté serveur
Pour utiliser cette méthode, vous devez d'abord créer une instance de la classe ClientScriptManager et obtenir le type de la classe, comme illustré ci-dessous.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

Lorsque vous avez une instance de cette classe, vous devez ensuite appeler cette méthode méthode et passer les paramètres appropriés comme indiqué ci-dessous, où je crée un bouton de lien hypertexte et définir la méthode NavigateURL pour pointer vers une ressource HTML incorporée.
HyperLink hlHelpFile = new HyperLink();
            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
            hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
            hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");
            
            this.Controls.Add(hlHelpFile);

            Image imgTest = new Image();
            imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
            imgTest.ID = "image1";
            hlHelpFile.Controls.Add(imgTest);

Dans le même code ci-dessus, j'ai également créé un bouton d'Image et de l'attribut ImageUrl est l'obtention de sa valeur d'une autre image .gif incorporé ressource.
À l'aide de la fonctionnalité de Substitution
Une autre fonctionnalité utile de l'utilisation des ressources Web est la propriété PerformSubstitution de l'attribut WebResource , comme indiqué dans la section "L'incorporation de the Resources Web" ci-dessus. Cette fonctionnalité vous permet d'obtenir effectivement ressources Web à l'intérieur d'un autre incorporé ressource. Si cette propriété est activée, le gestionnaire WebResource analyser la ressource incorporée et remplacer la syntaxe pour l'attribut d'assembly WebResource des ressources réelles avant de servir la page.

Dans le code ci-dessus, vous remarquerez que le contrôle de lien hypertexte a un événement côté client qui est nommé ChangeImage. Cette fonction de ChangeImage se trouve dans un fichier de script. Voici le code Pour ce script.
function ChangeImage(imgControl,varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
    document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
   document.getElementById('Label1').style.color = varcolor;
}
Ce fichier de script nommé MyScript.js est également une ressource incorporée dans le même contrôle COM. Et notez que j'utilise la méthode WebResource pour faire référence à une autre ressource incorporée dans le script .

En outre, pour vous assurer que ce fichier JavaScript est enregistré dans la page, j'utilise la méthode RegisterClientScriptInclude de la classe ClientScriptManager comme indiqué ci-dessous.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Utilisation du contrôle dans ASP.NET

Une fois que vous avez créé avec succès le contrôle COM, vous devez consommer ce contrôle dans un projet ASP.NET de client. Pour ce faire, vous devez Ajoutez le contrôle à la boîte à outils dans ASP.NET. Vous pouvez alors ajouter le contrôle à n'importe quel Formulaire Web dans le concepteur.

Lorsque vous ajoutez le contrôle à la boîte à outils, le contrôle est enregistré pour vous et le code suivant est ajouté lorsque vous regardez la syntaxe HTML.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
Dans mon contrôle COM, j'ai également incorporé un fichier de feuille de style, je vais à l'aide de mon application ASP.NET. Pour accéder à cette feuille de style, vous devez ajouter un lien HtmlControl dans la page HTML et définissez la propriété runatserver comme indiqué ci-dessous.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Après cela, vous pouvez définir par programme l'attribut Href de ce contrôle pour pointer vers l'attribut d'assembly WebResource dans l'événement Page_Load , comme indiqué ci-dessous.
protected void Page_Load(object sender, EventArgs e)
    {
        //Get the name of the Web Resource.
        String rsname = "SimpleControl.MyStyleSheet.css";
        
        //Get the type of the class.
        Type rstype = typeof(SimpleControl.MSButton);

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
     }

Lorsque vous exécutez le code, vous verrez un contrôle qui ressemble à la suivant :
Réduire cette imageAgrandir cette image
 Échec de petite taille
Et sur le passage de la souris, le contrôle sera l'aspect suivant :
Réduire cette imageAgrandir cette image
 petite réussite
Lorsque vous cliquez sur ce lien, il faudra vous à la page d'aide, qui est incorporée dans le fichier d'assembly COM.

Conclusion

Ressources Web est une nouvelle fonctionnalité très utile dans ASP.NET 2.0. Vous pouvez utiliser Cette fonctionnalité à votre avantage si vous l'utilisez avec prudence. De nombreuses techniques de mise en cache ont été utilisés pour s'assurer que les ressources Web n'affectent pas les performances de l'application.

Dans ASP.NET 2.0, WebResource.axd est utilisé en interne par le.NET Framework Microsoft pour récupérer des ressources incorporées. Par exemple, le .NET Framework utilise WebResource.axd pour récupérer le script WebUIValidation.js fichier qui est utilisé pour les contrôles de Validation et de récupérer le fichier de script Menu.js pour les contrôles de Menu .

Références

Pour plus d'informations, visitez les sites Web de Microsoft aux adresses suivantes :
Méthode ClientScriptManager.GetWebResourceUrl
http://msdn2.Microsoft.com/en-us/library(d=robot) /system.web.ui.clientscriptmanager.getwebresourceurl.aspx

Classe WebResourceAttribute
http://msdn2.Microsoft.com/en-us/library(d=robot) /system.web.ui.webresourceattribute.aspx

Ressources liées et incorporées
http://msdn2.Microsoft.com/en-us/library/ht9h2dk8.aspx
Comme toujours, n'hésitez pas à soumettre des idées sur des sujets que vous souhaitez adressée dans les chroniques à venir ou dans la Base de connaissances à l'aide du Demandez-le .

Propriétés

Numéro d'article: 910442 - Dernière mise à jour: mardi 30 avril 2013 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 2.0
Mots-clés : 
kbhowto kbasp kbmt KB910442 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d?une traduction incorrecte du contenu ou de son utilisation par les clients.
La version anglaise de cet article est la suivante: 910442
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires