Werken met webbronnen in ASP.NET 2.0

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 910442 - Bekijk de producten waarop dit artikel van toepassing is.
Ondersteuning voor ASP.NET-Voice kolom

Werken met webbronnen in ASP.NET 2.0

Deze kolom aan uw behoeften aanpassen, willen we nodigen u uit uw ideeën over onderwerpen die interessant zijn voor u en problemen die u wilt zien in toekomstige gericht Knowledge Base-artikelen en ondersteuning voor Voice kolommen indienen. Indienen van uw ideeën en feedback met behulp van de Vragen om met dit formulier. Er is ook een koppeling naar het formulier onderaan in deze kolom.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Inleiding

Hallo! Mijn naam is Praveen Yerneni en ik ben een werkende technische leiden met de ondersteuning voor ASP.NET-groep bij Microsoft. In de kolom van deze maand ga ik bespreken van bronnen op het Web en de implementatie ervan in de toepassing.

Als u een ontwikkelaar die veel met COM werkt besturingselementen, misschien vindt u dit artikel nuttig bij het oplossen van enkele van de sleutel problemen die tijdens de ontwikkeling van besturingselementen kunnen worden geconfronteerd. Eerder in Microsoft ASP.NET 1.1, als u wilt implementeren, statische bestanden zoals HTML-bestanden, CSS bestanden, afbeeldingsbestanden en scriptbestanden met behulp van een besturingselement COM, u moest maken een installatieprogramma en bundel bepalen deze bestanden samen met het COM-onderdeel. Hoewel Dit heeft gewerkt, dat veel problemen tijdens het implementeren van het besturingselement weergegeven. Voor voorbeeld u hebt problemen met versieconflicten met ervoor te zorgen dat bestanden zoals afbeeldingen zijn geïmplementeerd op dezelfde locatie of met beschadigd of kunnen ervoor zorgen dat het besturingselement niet verwijderde statische bestanden.

Web Bronnen in Microsoft ASP.NET 2.0 pakt deze problemen doordat de deze bronnen Developer insluiten in de assembly als .resources. Toegang tot deze statische bronnen, kunt u alleen een methode aanroepen in het code.

De werking van bronnen op het Web

Bronnen op het web gebaseerd zijn op een speciale handler met de naam WebResource.axd, die is ontworpen om assembly bronnen ophalen en dienen ze naar de webbrowser. Het type handler voor de WebResource.axd is AssemblyResourceLoader.

Wanneer een aanvraag binnenkomt van de client voor WebResource.axd, de handler zoekt naar de bron-id in de QueryString -methode van het object Request . Op basis van de waarde van de bron-id, de handler probeert vervolgens de assembly met deze bron te laden. Als dit bewerking is voltooid, wordt de handler zoekt vervolgens naar het kenmerk assembly en laadt u de resourcestream uit de assembly. Ten slotte wordt de handler pak de gegevens uit de bron streamen en stuur het naar de client in combinatie met de type inhoud dat u in het kenmerk assembly opgeeft.

De URL voor WebResource.axd ziet er als volgt uit:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
De indeling van deze URL is WebResource.axd?d=gecodeerd id& t =tijdstempelwaarde. De "d" staat voor de aangevraagde bron van de webpagina. De "t" wordt de tijdstempel voor de gewenste assembly die helpen kan bij het bepalen of er een is wijzigingen aan de resource.

Onderzoeken in de code

In mijn voorbeeld, hebben ik heb een COM-besturingselement dat wordt verbruikt door ontwikkeld een ASP.NET-webtoepassing te demonstreren van deze nieuwe functie.

COM-besturingselement voor de webbron

Voor het maken en insluiten van een webbron, hebben ik een COM ontwikkeld Control (SimpleControl). Heeft de volgende ingesloten bronnen:
  • Twee afbeeldingen van bestanden met de naam smallFail.gif en smallSuccess.gif. deze bestanden worden gebruikt voor rollover-effecten in de controle en worden verbruikt in de code van het besturingselement.
  • Een HTML-bestand met de naam Help.htm. Dit bestand bestaat niet veel tekst bevat en is slechts een demonstratie.
  • Een JavaScript-bestand met de naam MyScript.js. Dit bestand Sommige JavaScript-code die de functie voor vervanging wordt ook getoond bevat een verwijzing naar een andere ingesloten bron in dezelfde assembly.
  • Een CSS-bestand met de naam MyStyleSheet.css. Deze stijl blad wordt vervolgens rechtstreeks vanuit de ASP.NET-webtoepassing verbruikt.
In dit artikel zal ik bespreken hoe de onderdelen die vereist zijn voor Bronnen op het web.
Het insluiten van de bronnen op het Web
U moet eerst, zorg ervoor dat alle statische bestanden die zijn toegevoegd aan de bibliotheek Web project in Microsoft Visual Studio 2005 zijn ingesloten bronnen. U sluit deze bronnen, is het enige dat u hoeft te doen toevoegen Deze bestanden met Visual Studio en wijzigt u de eigenschappen van deze bestanden dus dat de actie build is ingesteld op Ingesloten Resource.

Nadat u dit hebt gedaan, hebt u ook maken zorgen dat deze bronnen hebben zijn verwezen door het kenmerk WebResource assembly in het bestand AssemblyInfo.cs zoals hieronder wordt weergegeven.
[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)]

Het kenmerk WebResource assembly heeft drie parameters als volgt:
  • Bron: de naam van de resource die is ingesloten in de assembly
  • ContentType: de MIME-bestandstype voor de resource
  • PerformSubstitution: een Booleaanse waarde die bepaalt of andere Web bron-URL's die waarnaar wordt verwezen in deze bron worden geparseerd en worden vervangen door het volledige pad van de bron
Ophalen van de bronnen op het Web
Ik heb de GetWebResourceUrl -methode, een methode van de klasse ClientScriptManager dat meestal wordt gebruikt voor het beheren van scripts op de client wordt gebruikt om de webbron. Deze methode retourneert een URL-verwijzing naar de server-side-bron die is ingesloten in een assembly. De methode GetWebResourceUrl accepteert de volgende twee parameters:
  • Type: het type van de resource aan de serverzijde
  • Naam: de naam van de resource aan de serverzijde
Als u deze methode gebruikt, hebben u een instantie van de klasse ClientScriptManager maken en het type van de klasse zoals hieronder wordt weergegeven.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

Wanneer er een exemplaar van deze klasse, hebt u vervolgens deze methode en geeft de juiste parameters zoals hieronder, waar ik een HyperLink knop maken en de methode NavigateURL om te verwijzen naar een ingesloten HTML-bron.
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);

Ook in de dezelfde code hierboven, ik heb gemaakt een knop afbeelding en het kenmerk ImageUrl ophalen van de waarde van een andere ingesloten GIF-afbeelding bron.
Met behulp van de functie vervangen
Een andere handige functie van het gebruik van bronnen op het Web is de eigenschap PerformSubstitution van het kenmerk WebResource zoals in de sectie "Insluiten van de bronnen op het Web" hierboven. Met deze functie kunt u webbronnen daadwerkelijk binnen een andere ingesloten bron. Als deze eigenschap is ingeschakeld, wordt de WebResource -handler ingesloten bron parseren en vervangen de syntaxis voor het kenmerk assembly van WebResource door daadwerkelijke resources voor dienstverlening de pagina.

In de code, zult u merken dat het besturingselement HyperLink is een client-side event met de naam ChangeImage. Deze functie ChangeImage bevindt zich in een scriptbestand. Dit is de code voor dit 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;
}
Dit scriptbestand met de naam MyScript.js is ook een ingesloten bron in hetzelfde besturingselement COM. En u merkt dat ik gebruik de methode WebResource om te verwijzen naar een andere ingesloten bron in het script bestand.

Ook om ervoor te zorgen dat deze JavaScript-bestand is geregistreerd de pagina ik gebruik de RegisterClientScriptInclude methode van de klasse ClientScriptManager zoals hieronder wordt weergegeven.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Gebruik van het besturingselement in ASP.NET

Nadat u de COM-besturingselement met succes hebt gemaakt, moet u Dit besturingselement in een ASP.NET-project client verbruiken. Dit doet hoeft u alleen te het besturingselement toevoegen aan de werkset in ASP.NET. Vervolgens kunt u het besturingselement toevoegen aan een Het webformulier in de ontwerpfunctie.

Wanneer u het besturingselement aan de werkset toevoegen de besturingselement is geregistreerd voor u en de volgende code wordt toegevoegd wanneer u bekijkt de HTML-syntaxis.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
In mijn besturingselement COM ik ook een opmaakmodelbestand ik wordt ingesloten in de ASP.NET-toepassing worden gebruikt. Als u dit opmaakmodel, moet u toevoegen een koppeling HtmlControl in de HTML-pagina en de eigenschap runatserver zoals hieronder.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Hierna kunt u via programmacode het Href -kenmerk van dit besturingselement om te verwijzen naar het kenmerk WebResource assembly in de gebeurtenis Page_Load als volgt instellen.
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);
     }

Wanneer u de code uitvoert, ziet u een besturingselement dat eruit als ziet de volgende:
Deze afbeelding samenvouwenDeze afbeelding uitklappen
 kleine fouten
En op de muis, het besturingselement eruit ziet als volgt uit:
Deze afbeelding samenvouwenDeze afbeelding uitklappen
 kleine succes
Als u op deze koppeling klikt, het gaat u naar de help-pagina die ingesloten in het assemblybestand voor COM-besturingselement.

Conclusie

Bronnen op het web is een handige nieuwe functie van ASP.NET 2.0. U kunt Deze functie kunt u uw voordeel als u verstandig gebruikt. Veel cache-technieken zijn gebruikt om te controleren of Web Resources hebben geen invloed op de prestaties van de toepassing.

In ASP.NET 2.0, wordt WebResource.axd intern gebruikt door Microsoft .NET Framework ingesloten resources ophalen. Bijvoorbeeld, de .NET framework WebResource.axd wordt gebruikt voor het ophalen van het script WebUIValidation.js het bestand dat wordt gebruikt voor validatie -controls en op te halen van het scriptbestand Menu.js voor Menu besturingselementen .

Verwijzingen

Ga naar de volgende Microsoft-websites voor meer informatie:
ClientScriptManager.GetWebResourceUrl, methode
http://msdn2.Microsoft.com/en-us/library(d=robot) /system.web.ui.clientscriptmanager.getwebresourceurl.aspx

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

Gekoppelde versus ingesloten resources
http://msdn2.Microsoft.com/en-us/library/ht9h2dk8.aspx
Zoals altijd gerust ideeën over onderwerpen die u wilt verzenden opgenomen in toekomstige kolommen of in de Knowledge Base met de Vragen om met dit formulier.

Eigenschappen

Artikel ID: 910442 - Laatste beoordeling: dinsdag 30 april 2013 - Wijziging: 6.0
De informatie in dit artikel is van toepassing op:
  • Microsoft ASP.NET 2.0
Trefwoorden: 
kbhowto kbasp kbmt KB910442 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.
De Engelstalige versie van dit artikel is de volgende: 910442
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

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