Thomas Bandt

Über mich | Kontakt | Archiv

ASP.NET - Relative Url's à la "~/dir/file.gif" auflösen

Ein nettes Feature von ASP.NET ist unter anderem seit Beginn an die Möglichkeit, Pfade prinzipiell relativ zum Application-Root anzugeben. Gebrauch machen kann man davon zum Beispiel beim ImageControl usw.:

ASPX:

"myImg" runat="server" ImageUrl="~/img/bild.jpg" />

HTML am Client:

"meineApp/img/bild.jpg" />

Vorteil: man braucht sich nicht mehr um die Pfade zu kümmern, egal wo die Applikation liegt, die Pfade werden immer richtig entsprechend der aktuellen Umgebung gerendert.

Nun kam die Frage auf, wie man soetwas selbst macht. D.h. man hat einen relativen Pfad und möchte diesen in den richtigen umwandeln lassen. Die Methode ist etwas versteckt, wenn auch selbstsprechend benannt: ResolveUrl(). Damit kann man seine eigenen Pfade auflösen:

ResolveUrl("~/bilder/spacer.gif")

Kommentare

  1. Alex schrieb am Freitag, 29. Juli 2005 16:43:00 Uhr:

    Ich hatte das auch verwendet bisher, bin aber schon mal in ein Problem reingelaufen damit - wenn ich nur noch wüßte, was das war... aber vielleicht läufst Du selbst irgendwann in die Falle, dann kann ich Dir vielleicht wenigstens noch die Lösung erzählen ;-)
  2. Thomas schrieb am Freitag, 29. Juli 2005 23:43:00 Uhr:

    Hehe, also beim ersten Test wo ich es benutzt habe, lief es wunderbar ... aber ich komme drauf zurück, wenn nötig ;)
  3. Hannes Preishuber schrieb am Samstag, 30. Juli 2005 21:02:00 Uhr:

    das Problem tritt mit Master Pages und Unterverzeichnissen auf

    Sehr interesannter Lösungsansatz: einfach bei den IMG den zusatz runat=server dazu.
    ASp.NET 2.0 macht dann schon
  4. Thomas schrieb am Samstag, 30. Juli 2005 21:05:00 Uhr:

    Jupp, funktioniert im Grunde mit jedem Control, was serverseitig läuft, egal ob HTML- oder WebControl.

    In meinem Fall war es allerdings ein CustomControl, was die Pfade zu diversen Bildern via Property bekommen hat - da musste ich es irgendwie "selbst" machen.


« Zurück  |  Weiter »