ASP.Net URL's relativ zum Anwendungsverzeichnis

Hat man eine tolle ASP.Net - Anwendung geschrieben und möchte diese nun mit ein paar Grafiken verzieren, bietet es sich an dies über die (vorhandene ;) Masterpage zu erledigen.

Soweit so gut.

Hat man in seiner ASP.Net - Anwendung jedoch Ordner zum gruppieren der Inhalte und evtl. für das spätere setzen von Berechtigungen verwendet, gestaltet sich dies schon schwieriger.

Eine Grafik, in der Masterpage adressiert mit "img/bg.gif" wird auf einer ASP.Net Seite zum Beispiel "User.aspx" in einem Ordner "Admin" referenziert als "Admin/img/bg.gif".

Dort ist diese Grafik jedoch leider nicht zu finden. Eine relative URL - Angabe mit "../img" funktioniert auch nicht, da dann Seiten die oberhalb des Admin - Ordners liegen die Grafik nicht finden können. Eine Referenzierung über "/img/" bedeutet jedoch das das Verzeichnis mit den Grafiken möglicherweise außerhalb des Anwendungverzeichnisses liegt.

Die Lösung in diesem Dilemma ist die Referenzierung per "~/img". "~/" Referenziert beim ASP.Net immer das Root-Verzeichnis der Webanwendung. Genau das was wir brauchen.

Leider können die Browser mit dieser Angabe nichts anfangen, da diese nicht wissen welches Verzeichnis das Root der Webanwendung ist.

Hier gibt es einen sinnvollen Einsatz von Inline Code:

<body style="background-image: url(<% Response.Write(Page.ResolveUrl("~/img/bg.gif")); %>); background-repeat: no-repeat;" >




So adressierte Grafiken (und anderer Dateien) werden vom Server in einen Absoluten Pfad aufgelöst und können vom Browser problemlos geladen werden.

Keine Kommentare: