Hi Leute,
ich habe bei einer Webanwendung im root Verzeichnis eine Masterseite liegen. Diese wird von allen Seiten verwendet. Die Seiten liegen in ver schiedenen Verzeichnissen und im root Verzeichnis der Webanwendung. Wenn eine Seite im root Verzeichnis drauf zugreift funktioniert es wunderbar da die Pfade im CSS bei der url() Funktion richtig sind. Wenn aber eine Seite in einem Unterverzeichnis die Master verwendet werden die Grafiken nicht gefunden, da er ja vom Unterverzeichnis ausgeht und es aber vom root aus machen müsste
Jetzt meine Frage: Gibt es eine Möglichkeit die Pfade der Masterpage dynamisch zu machen oder eine andere Art diese Masterpage einzubinden, damit die Grafiken von überall geladen werden?
Ich möchte nicht die Grafiken in alle Unterverzeichnisse kopieren oder alle Seiten ins root Verzeichnis legen. Das bringt mir nichts.
Hier noch mal eine Übersicht.
root
|
|-Ordner 1
| |-Seite1.aspx (nutzt Layout.Master)
| |-......
|
|-Ordner 2
| |-Seite1.aspx (nutzt Layout.Master)
|
|-Grafiken
| |-banner.jpg
| |-......
|
|-Layout.Master (nutzt die Grafiken über CSS mit url(Grafiken/banner.jpg) )
|-Seite1.aspx (nutzt Layout.Master)
|-......
Hoffe das mit der Übersicht es etwas verständlicher wird.
Danke schon mal im Voraus.
MfG Phönix
Hallo,
normalerweise mit
ResolveClientUrl("~/Grafiken/banner.jpg")
,
allerdings musst Du dann den Style direkt in der MasterPage (nicht in einer externen .css) definieren, damit Du das dynamisch auflösen kannst.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Du musst die CSS nicht direkt in die Master.Master reinschreiben nimm einfach den Code und teste mal.
VirtualPathUtility.ToAbsolute("~/Resources/MyPic.jpg"):
.elron
Danke für die schnellen Antworten.
Eure Ansätze sind schon mal nicht schlecht, aber leider verwende ich die Grafiken nicht in C# sondern direkt im Style bei div. Das würde heißen ich müsste für die ganzen Sachen mit response.write das div schreiben damit ich die pfade verwenden kann. Hmm eine Lösung aber nicht gerade das was ich mir gedacht hatte.
Ich hab eine Lösung gefunden.
Der Ansatz mit dem Webanwendungsrootzeichen (~) war der richtige.
Ich hab einfach das normale div das es nicht kann durch ein Panel ersetzt. Das Panel stellt ja dann auch ein div dar.
<asp:Panel runat="server" BackImageUrl="~/Layout/banner_fill.jpg" Height="100" />
zu
<div style="height: 100px; background-image: url(~/Layout/banner_fill.jpg)">
</div>
dann nimmt er immer den richigen Pfad. Danke noch mal an euch beide.
MfG Phönix
achsooo das wolltest du naja ich würde bei der DIV bleiben und es so machen.
<div style'<%#="height: 100px; background-image: url"+
VirtualPathUtility.ToAbsolute("~/Layout/banner_fill.jpg") %>'>
und in der PageLoad machste am Ende ein this.DataBind();
Ich würde kein Panel nehmen wenn Du nur eine Div haben willst.
Das Panel bringt ja viel mehr mit als nur ein normales Div.
.elron