Utilisation des ressources Web dans ASP.NET 2.0

Traductions disponibles Traductions disponibles
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 vos 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 ! Praveen Yerneni, mon nom est et je suis responsable technique travaillant avec le groupe de support ASP.NET chez Microsoft. Dans l'article de mois-ci ce, je vais discuter des ressources Web et comment les implémenter dans votre application.

Si vous êtes un développeur qui travaille fréquemment avec des contrôles COM, vous pouvez trouver cet article utile dans résolvant certains des problèmes clés que vous pouvez rencontrer lors du développement de contrôles. Auparavant, Microsoft ASP.NET 1.1, si vous souhaitez déployer des fichiers statiques tels que les fichiers .html, fichiers .css, les fichiers image et les fichiers de script à l'aide d'un contrôle COM, vous deviez créer un programme d'installation et de regrouper ces fichiers avec le contrôle COM. Bien que cette procédure fonctionne, il affiche de nombreux problèmes lors du déploiement du contrôle. Par exemple, peut avoir des problèmes avec les conflits de version, veillant à ce que les fichiers images ont été déployées vers le même emplacement ou endommagés ou supprimés des fichiers statiques qui pourraient provoquer l'échec du contrôle.

Les ressources Web dans Microsoft ASP.NET 2.0 résout ces problèmes en permettant au 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 code du contrôle.

Fonctionnement des 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 lui répondre au navigateur Web. Le type de gestionnaire de WebResource.axd est AssemblyResourceLoader.

Lorsqu'une demande arrive à partir du client de WebResource.axd, le gestionnaire recherche l'identificateur de ressource Web dans la méthode QueryString de l'objet de la demande . En fonction de la valeur de l'identificateur de ressource Web, le gestionnaire puis essaie de charger l'assembly qui contient cette ressource. Si cette opération réussit, le gestionnaire recherche de l'attribut d'assembly et charger le flux de ressources à partir de l'assembly. Enfin, le gestionnaire capture les données à partir du flux de ressources et l'envoyer au client ainsi que le type de contenu que vous spécifiez dans l'attribut d'assembly.

L'URL WebResource.axd ressemble à ceci :
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Le format de l'URL est WebResource.axd?d=identificateur crypté& t =cachet. « d » est l'abréviation de la ressource Web demandée. Le « t » est l'horodatage pour l'assembly demandé, ce qui peut aider à déterminer si les modifications apportées à la ressource a été.

Plonger dans le code

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

Contrôle COM pour la ressource Web

Pour la création et l'incorporation d'une ressource Web, j'ai développé un contrôle COM (SimpleControl). Il possède les ressources intégrées suivantes :
  • Deux fichiers nommés andsmallSuccess.gif de smallFail.gif d'image. Ces fichiers image sont utilisés pour les effets de survol en theControl est et consommés au sein du code de contrôle.
  • Un fichier HTML nommé Help.htm. Ce fichier ne notcontain de texte et est seulement pour la démonstration.
  • Un fichier JavaScript nommé MyScript.js. Cette filecontains du code JavaScript qui illustre également la substitution featureto obtenir une référence à une autre ressource incorporée dans la sameassembly.
  • Un seul fichier .css est nommé MyStyleSheet.css. Cette feuille de style est ensuite consommé directement à partir de l'application Web ASP.NET.
Dans cet article, j'aborderai les parties qui sont requis pour les ressources Web.
Incorporer des ressources Web
Vous devez d'abord vous assurer que tous les fichiers statiques qui sont ajoutés au projet bibliothèque de contrôles Web dans Microsoft Visual Studio 2005 sont des ressources incorporées. Pour incorporer ces ressources, tout ce que vous devez faire est ajouter ces fichiers à Visual Studio et ensuite de modifier les propriétés de ces fichiers afin que la valeur de l'action de génération sur Ressource incorporée.

Après avoir fait cela, vous devez également vous assurer que ces ressources ont été référencés par l'attribut WebResource d'assembly dans le fichier AssemblyInfo.cs, 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 qui est incorporé dans l'assembly
  • ContentType: type de fichier MIME de la ressource
  • PerformSubstitution: une valeur de type Boolean qui détermine si les autres URLsthat de ressources Web sont référencés dans cette ressource sont analysées et remplacées par la pathof complète 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 d'URL à la ressource côté serveur incorporée dans un assembly. La méthode GetWebResourceUrl accepte les 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 indiqué ci-dessous.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

Lorsque vous avez une instance de cette classe, vous devez appeler cette méthode et passer les paramètres appropriés comme indiqué ci-dessous, où créer 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 l'attribut ImageUrl est l'obtention de sa valeur à partir d'une autre ressource d'image .gif incorporé.
À l'aide de la fonction de Substitution
Une autre fonctionnalité utile de l'utilisation de ressources Web est la propriété PerformSubstitution de l'attribut WebResource , comme indiqué dans la section « L'incorporation des ressources du Web » ci-dessus. Cette fonctionnalité vous permet d'obtenir effectivement des ressources Web à l'intérieur d'une autre ressource incorporée. Si cette propriété est activée, le gestionnaire WebResource analyser la ressource incorporée et remplacer la syntaxe de l'attribut d'assembly WebResource par des ressources réelles avant de servir la page.

Dans le code ci-dessus, vous remarquerez que le contrôle de lien hypertexte possède un événement côté client qui est nommé ChangeImage. Cette fonction ChangeImage se trouve dans un fichier de script. Voici le code de 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 fichier de 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 utiliser ce contrôle dans un projet ASP.NET de client. Pour ce faire, il vous suffit d'ajouter le contrôle à la boîte à outils dans ASP.NET. Ensuite, vous pouvez ajouter le contrôle à un 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 inclus un fichier de feuille de style, j'utilise dans mon application ASP.NET. Pour accéder à cette feuille de style, vous devez ajouter un lien HtmlControl dans la page HTML et la valeur 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 illustré 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 à ceci :
Réduire cette imageAgrandir cette image
 Échec de petite taille
Et de pointage avec la souris, le contrôle sera l'aspect suivant :
Réduire cette imageAgrandir cette image
 réussite de petite taille
Lorsque vous cliquez sur ce lien, il vous faudra à 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 afin de vous 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 de Microsoft pour extraire des ressources incorporées. Par exemple, le.NET Framework utilise WebResource.axd pour récupérer le fichier de script WebUIValidation.js 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 à l'adresse suivante :
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 à soumettre des idées sur des sujets que vous souhaitez traités dans de futurs des colonnes ou dans la Base de connaissances à l'aide de la Demandez-le .

Propriétés

Numéro d'article: 910442 - Dernière mise à jour: samedi 23 novembre 2013 - Version: 4.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

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com