2008-12-12 6 views
6

Ich nehme an, das ist eine einfache Frage, aber ich werde verdammt sein, wenn ich die Antwort finden kann.Relativer Pfad zu einem Stylesheet in Visual Studio funktioniert nicht in der Vorschau

Ich habe eine Website in Visual Studio 2008. Die Pfade zu den Stylesheets (und Bilder) sind in folgendem Format /css/stylesheetname.css

An der Wurzel des Webprojekt in Visual Studio der Ordner vorhanden ist wie auch das Stylesheet. Diese Pfade funktionieren einwandfrei, wenn sie in IIS ausgeführt werden.

Wenn ich den eingebauten Webserver in Visual Studio verwenden, die Pfade versagen, weil sie den Projektnamen in dem Pfad dh http://localhost:2020/projectname/default.aspx

In diesem Fall legt die/den Pfad zu http://localhost:2020 rechts zurück nimmt

Dieser weitere mischt wird durch die Tatsache, dass, wenn Sie auf "Design" klicken, die Stile, die Hintergrundbilder importieren, alle fehlschlagen, obwohl das Stylesheet korrekt importiert wird (weil alle anderen Aspekte des Stylesheet funktionieren, dh .class{font-family:arial;} funktioniert aber .class{background: url(/images/image.jpg)} nicht).

Ich denke, es hat alles damit zu tun, wie Visual Studio seinen Root-Pfad für die Website berechnet, aber ich kann keine Einstellung finden, um dies zu ändern.

Irgendwelche Ideen ?? Update: nach Egil Hansen's Antwort Ich konvertierte die Pfade in der CSS-Datei in relative Pfade. Die Hintergrundbilder werden im Designmodus jedoch immer noch nicht angezeigt. Ich werde mir die Verwendung von Themes ansehen, um dies zu gegebener Zeit zu umgehen.

Antwort

0

es ist seit alters her, dass ich irgendetwas in css gemacht habe, aber vielleicht url (./ images/image.jpg) wird funktionieren?

Edit: Oder vielmehr ~/format /css/stylesheetname.css oder ./format/css/stylesheetname.css als URL zum Stylesheet.

5

Ich denke, die richtige Lösung ist die Verwendung von relativen URLs im Stylesheet anstelle von absoluten URLs, wie Sie jetzt verwenden.

Beachten Sie, dass relative URLs in Stylesheets relativ zum Speicherort des Stylesheets sind, nicht die aktuelle Seite, die vom Browser angezeigt wird.

Wenn Sie ASP.NET-Designs verwenden, können Sie alle Ihre Website-Grafiken in einen Ordner /App_Themes/YourTheme/Images/ legen und Ihr Stylesheet in den Ordner /App_Themes/YourTheme/ legen.

In Ihrem Stylesheet können Sie dann einfach ein Bild mit url(Images/img.gif) referenzieren, und es wird sowohl online als auch in der Entwicklung funktionieren.

Sie müssen Ihr ASP.NET-Design nur den gewünschten Seiten zuweisen, entweder über den Abschnitt Seiten (<pages styleSheetTheme="Default">) von web.config, der allen Seiten auf der Website oder über die <% ein Thema zuweist. @ Page ... auf jeder Seite.

Im Allgemeinen können Sie einige wirklich nette Dinge mit ASP.NET Themes und Skins tun, werfen Sie einfach einen Blick auf die ASP.NET Themes and Skins Overview über msdn.microsoft.com.

Es gibt ein paar zu beachtende Probleme mit Themen in ASP.NET, werfen Sie einen Blick auf meine Post How to take control of style sheets in ASP.NET Themes with the StylePlaceHolder and Style control, die erläutert und löst die Probleme, die ich bisher begegnet bin.

0

Ich hatte das gleiche Problem und es hat mich verrückt gemacht. Lösung ist, einen Apps_Theme-Ordner hinzuzufügen und die Bilder dorthin zu kopieren. Wenn Sie die Site veröffentlichen, bleibt die Ordnerstruktur erhalten und die Bilder werden angezeigt.

0

Ich hatte Pfad css URL Bild von Code festgelegt {Hintergrund: URL (/images/xxx.jpg) No-Repeat; } und läuft auf IIS-Datei, so muss Standard-Website zu einem Projekt

, wie man ja Testing Vorschau zeigen Typ: http://localhost/default.aspx

dies kann richtigen Pfad gleicher Lauf auf Server Include-Datei js oder css verwenden „/“ Wurzelpfad

prost Noboyband

1

ich Projekte mit dem benutzerdefinierten Bildordner für alle meine Grafiken für ASP.Net-Anwendungen ausgeführt wurden. Mit den in der Progressive VS IDE verfügbaren App_Theme- und App_Code-Ordnern wurden diesbezüglich Fortschritte gemacht; Ich behielt immer noch meinen Ordner und es wurde nicht bei der Bereitstellung auf dem Server disapponited.

Also mit dieser sagte - der sprichwörtlich Ordner mit allen bin, App_Code und _themes und die Bezugnahme auf sie durch diese Art und Weise wird sitzen

background: url (../ Bild/..);

natürlich der Code oben in der CSS-Datei sitzen. Es funktioniert für mich die ganze Zeit

1

nicht sicher, ob dies für VS 2008 arbeitet oder nicht, aber im mit Visual Web Developer 2010 und es funktionierte für mich:

1) Klicken Sie auf das Projekt in der Lösung Explorer

2) zeigt es eine „Virtual Path“ Eigenschaft, die auf „/ Projektname“ vorbelegt

3) ändern sie ihn auf „/“ statt, und es scheint zu tun, was

lassen sie mich wissen erwünscht ist, wenn das funktioniert für dich!

Verwandte Themen