Arbeiten mit Webressourcen in ASP.NET 2.0

Artikel-ID: 910442 - Produkte anzeigen, auf die sich dieser Artikel bezieht
ASP.NET Support Voice-Kolumne

Arbeiten mit Webressourcen in ASP.NET 2.0

Um diese Kolumne an Ihre Bedürfnisse anpassen, möchten wir möchten Sie einladen, reichen Sie Ihre Ideen zu Themen und Problemen, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen behandeln. Sie können Ihre Ideen und Feedback mit übermitteln die Danach Fragen Formular. Es gibt auch ein Link zu dem Formular am Ende dieser Spalte.
Alles erweitern | Alles schließen

Auf dieser Seite

Einführung

Hallo! Mein Name ist Praveen Yerneni und ich bin ein funktionierendes technischer Leiter mit der ASP.NET Gruppe bei Microsoft. Im Artikel dieses Monats werde ich Web-Ressourcen und deren in Implementierung erläutern die Anwendung.

Wenn Sie Entwickler sind, die ausgiebig mit COM arbeitet Steuerelemente, können Sie diesen Artikel nützlich beim Umgang mit einigen der wichtigsten Probleme, die Sie möglicherweise, beim Entwickeln von Steuerelementen stoßen. Zuvor in Microsoft ASP.NET 1.1, wenn Sie statische Dateien wie HTML-Dateien bereitstellen wollten CSS Dateien, Bilddateien und Skriptdateien mithilfe eines COM-Steuerelements, mussten Sie zum Erstellen ein Installationsprogramm und Bündel steuern diese Dateien zusammen mit der COM. Obwohl Dies funktionierte, es viele Probleme beim Bereitstellen des Steuerelements dargestellt. Für Beispielsweise haben Sie möglicherweise Probleme mit Versionskonflikte mit dafür dass Dateien wie Bilder an demselben Speicherort bereitgestellt wurden, oder mit beschädigt oder gelöschten statische Dateien, die das Steuerelement fehlschlagen verursachen können.

Web Ressourcen in Microsoft ASP.NET 2.0 löst diese Probleme, mit deren Hilfe die Entwickler Einbetten dieser Ressourcen in der Assembly als Resources. Auf diese zugreifen. statische Ressourcen, können Sie nur eine Methode in des Steuerelements aufrufen Code.

Funktionsweise von Webressourcen

Webressourcen verlassen sich auf einen speziellen Handler mit dem Namen WebResource.axd, das zum Abrufen von Ressourcen in einer Assembly und dienen soll zu den Web-Browser. Der Handlertyp für WebResource.axd ist AssemblyResourceLoader.

Wenn eine Anforderung vom Client für eingeht WebResource.axd, sieht der Ereignishandler für die Webressource Bezeichner in der QueryString -Methode des Request -Objekts. Basierend auf dem Wert des Bezeichners Webressource, die Handler versucht, die Assembly zu laden, die diese Ressource enthält. Wenn diese Vorgang erfolgreich ist, der Handler für das Assembly-Attribut dann aussehen wird und Laden Sie den Ressourcenstream aus der Assembly. Schließlich wird der Handler grab die Daten aus der Ressource stream und senden es an den Client zusammen mit der Content-Type, die Sie in das Assembly-Attribut angeben.

Die URL für WebResource.axd sieht folgendermaßen aus:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Das Format dieser URL ist WebResource.axd?d=verschlüsselt Bezeichner& t =Zeitstempel mit dem Wert. Die "d" steht für die angeforderte Webressource. Das "t" ist der Zeitstempel für die angeforderte Assembly, die helfen kann, festzustellen, ob es einen gab Änderungen an der Ressource.

Eintauchen in den code

In meinem Beispiel habe ich ein COM-Steuerelement entwickelt, die verwendet wird eine ASP.NET Webanwendung für dieses neue Feature zu veranschaulichen.

COM-Steuerelement für die Webressource

Zum Erstellen und Einbetten von einer Webressource, habe ich eine COM entwickelt. Steuerelement (SimpleControl). Es hat die folgenden eingebetteten Ressourcen:
  • Zwei Bilddateien mit den Namen smallFail.gif und smallSuccess.gif. diese Bilddateien, für die Rollover-Effekte in verwendet werden der Steuerelement und sind, die innerhalb des Steuercodes verbraucht werden.
  • Eine HTML-Datei mit dem Namen Help.htm. Diese Datei ist nicht viel Text enthalten und ist nur für Demo.
  • Eine JavaScript-Datei mit dem Namen MyScript.js. Diese Datei enthält einige Javascriptcode, der veranschaulicht auch die Substitution-Funktion zum Abrufen eines Verweises auf einen anderen eingebettete Ressource in der gleichen Assembly.
  • Eine CSS-Datei mit dem Namen MyStyleSheet.css. Dieser Stil Blatt wird dann direkt von der ASP.NET Web Application bereit.
In diesem Artikel wird die Teile erörtert, die für die erforderlich sind Web-Ressourcen.
Einbetten von Webressourcen
Zuerst müssen Sie sicherstellen, dass alle statischen Dateien, die sind die Web-Steuerelementbibliothek-Projekt in Microsoft Visual Studio 2005 werden hinzugefügt eingebettete Ressourcen. Um diese Ressourcen einzubetten, Sie müssen, lediglich hinzufügen Diese Dateien in Visual Studio und ändern Sie die Eigenschaften dieser Dateien so der Buildvorgang eingerichtet wird, um Eingebettete Ressource.

Nachdem Sie dies getan haben, müssen Sie auch Sie sicher, dass diese Ressourcen durch das WebResource -Assembly-Attribut in der Datei AssemblyInfo.cs referenziert wurden, wie unten dargestellt.
[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)]

Das WebResource -Assembly-Attribut verfügt über drei Parameter wie folgt:
  • Webressource: der Name der Ressource, die in der Assembly eingebettet ist
  • ContentType: die MIME-Dateityp für die Ressource
  • PerformSubstitution: ein boolescher Wert, der bestimmt, ob URLs von anderen Webressourcen verwiesen wird, werden in dieser Ressource analysiert und durch den vollständigen Pfad ersetzt werden der Ressource
Abrufen von Web-Ressourcen
Zum Abrufen der Webressource, habe ich GetWebResourceUrl -Methode verwendet, die eine Methode der ClientScriptManager -Klasse, die in der Regel für die Verwaltung von clientseitigen Skripts verwendet wird. Diese Methode gibt einen URL-Verweis auf die Server-Side-Ressource, die in einer Assembly eingebettet. Die GetWebResourceUrl -Methode akzeptiert die folgenden zwei Parameter:
  • Typ: der Typ der serverseitigen Ressource
  • Ressourcenname: der Name der serverseitigen Ressource
Um diese Methode verwenden, müssen Sie zuerst eine Instanz der ClientScriptManager -Klasse erstellen, und rufen den Typ der Klasse, wie unten dargestellt.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

Wenn Sie eine Instanz dieser Klasse haben, gibt es dann zu nennen Methode und übergeben Sie die entsprechenden Parametern siehe unten, wo erstelle ich eine HyperLink -Schaltfläche und legen Sie die NavigateURL -Methode auf eine eingebettete HTML-Ressource hinzu.
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);

Auch den gleichen Code oben aufgelistet, erstellt eine Bildschaltfläche und das Attribut ImageUrl erhält seinen Wert aus einem anderen eingebetteten GIF-Bild Ressource.
Mit Hilfe der Ersetzen-Funktion
Ein weiteres nützliches Feature der Verwendung von Web-Ressourcen ist die PerformSubstitution -Eigenschaft des WebResource -Attributs, wie im Abschnitt "Web-Ressourcen Embedding" angezeigt oben. Dieser Funktion können Sie die Gelegenheit, Web-Ressourcen in einem anderen eingebettet Ressource. Wenn diese Eigenschaft aktiviert ist, der WebResource -Handler eingebettete Ressource analysiert und Ersetzen Sie die syntax für das WebResource -Assembly-Attribut durch aktuelle Ressourcen vor dem durch den Informationsfluss für den Seite.

Im obigen Code sehen Sie sich, dass das HyperLink -Steuerelement ein clientseitiges Ereignis wurde mit dem Namen ChangeImage. Diese ChangeImage -Funktion befindet sich in einer Skriptdatei. Der folgende Code ist der code für dieses Skript.
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;
}
Diese Skriptdatei mit dem Namen MyScript.js ist auch eine eingebettete Ressource in einem COM-Steuerelement. Und beachten Sie, dass ich die WebResource -Methode verwende, um auf eine andere eingebettete Ressource in das Skript zu verweisen Datei ein.

Auch, um sicherzustellen, dass diese JavaScript-Datei in registriert ist die Seite verwende ich die RegisterClientScriptInclude -Methode der ClientScriptManager -Klasse, wie unten dargestellt.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Verwenden das Steuerelement in ASP.NET

Nachdem Sie das COM-Steuerelement erfolgreich erstellt haben, müssen Sie Nutzen Sie dieses Steuerelement in einem ASP.NET Clientprojekt. Hierzu müssen Sie lediglich das Steuerelement der Toolbox in ASP.NET hinzufügen. Dann können Sie das Steuerelement auf alle hinzufügen. Webformular im Designer.

Wenn Sie das Steuerelement der Toolbox Hinzufügen der Steuerelement für Sie registriert ist und der folgende Code wird hinzugefügt, wenn Sie sich ansehen die HTML-Syntax.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
Im COM-Steuerelement habe ich auch eine Stylesheet-Datei, eingebettet, die werde ich in meiner Anwendung ASP.NET verwenden. Um dieses Stylesheet zuzugreifen, müssen Sie hinzufügen eine Verknüpfung HtmlControl in die HTML-Seite und die Runat -Eigenschaft auf Server siehe unten.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Danach können Sie programmgesteuert das Href -Attribut dieses Steuerelements auf das WebResource -Assembly-Attribut im Ereignis Page_Load hinzu wie folgt festlegen.
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);
     }

Wenn Sie den Code ausführen, sehen Sie ein Steuerelement, das aussieht wie die nach:
Bild minimierenBild vergrößern
 kleine Fehler
Und auf Mauskontakt, wird das Steuerelement wie folgt aussehen:
Bild minimierenBild vergrößern
 kleine Erfolg
Wenn Sie diesen Link klicken, es gelangen Sie zur Hilfeseite, die in der Datei des COM-Assembly eingebettet ist.

Abschluss

Web-Ressourcen ist eine nützliche neue Funktion in ASP.NET 2.0. Sie können verwenden Dieses Feature zu Ihrem Vorteil, wenn Sie mit Bedacht verwenden. Viele Verfahren zur Zwischenspeicherung wurden verwendet, um sicherzustellen, dass Web-Ressourcen nicht die Leistung auswirken die Anwendung.

In ASP.NET 2.0 ist WebResource.axd intern von verwendet das Microsoft.NET Framework zum Abrufen von eingebetteter Ressourcen. Z. B. die .NET Framework verwendet WebResource.axd, um das Skript WebUIValidation.js abrufen Datei, die für Validierungssteuerelemente und zum Abrufen von Menu.js-Skriptdatei für Menü -Steuerelemente verwendet wird.

Informationsquellen

Weitere Informationen finden Sie auf den folgenden Microsoft-Websites:
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

Verknüpfte oder eingebettete Ressourcen
http://msdn2.Microsoft.com/en-us/library/ht9h2dk8.aspx
Wie immer gerne und Wünsche zu Themen wirklich in einem zukünftigen Artikel oder in der Knowledge Base mithilfe der Danach Fragen Formular.

Eigenschaften

Artikel-ID: 910442 - Geändert am: Dienstag, 30. April 2013 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 2.0
Keywords: 
kbhowto kbasp kbmt KB910442 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 910442
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns