Laden...

Problem mit Pfaden von Grafiken in Masterpage

Erstellt von Phönix vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.080 Views
P
Phönix Themenstarter:in
67 Beiträge seit 2007
vor 14 Jahren
Problem mit Pfaden von Grafiken in Masterpage

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

3.170 Beiträge seit 2006
vor 14 Jahren

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

E
171 Beiträge seit 2004
vor 14 Jahren

Du musst die CSS nicht direkt in die Master.Master reinschreiben nimm einfach den Code und teste mal.


VirtualPathUtility.ToAbsolute("~/Resources/MyPic.jpg"):

.elron

P
Phönix Themenstarter:in
67 Beiträge seit 2007
vor 14 Jahren

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.

E
171 Beiträge seit 2004
vor 14 Jahren

Poste mal den Abschnitt bitte ..

.elron

P
Phönix Themenstarter:in
67 Beiträge seit 2007
vor 14 Jahren

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

E
171 Beiträge seit 2004
vor 14 Jahren

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