ASP.Net: Relativer Pfad mit ../ ändern in Link Url und ImageUrl
Problem: Die ausgegebenen URL Adressen in Hyperlinks zeigen auf einen
Unterordner in meiner Domain,
da das UserControl oder die Webseite, Page sich in einem Unterverzeichnis befindet.
Hier am Beispiel
Die Hauptseite heißt /Default.aspx und soll auf die Datei details.aspx im gleichen Verzeichnis zeigen.
Da das Link-Element Hyperlink-Control sich in einem
Unterverzeichnis befindet mit dem Namen /_usercontrols
Verweist die resultierende URL Adresse des Links auf
_Usercontrol/Details.aspx
Bisher wurde der Link als URL einfach ohne Domain ausgegeben
Dim sLink As String = "Details?d=" & intIDDetail & "&a=" & fx.dbZahlInt(row("IDArea")) & "&f=" & fx.dbZahlInt(row("IDFolder")) & "&l=0&t=" & sTitleURL
Lösung
Einfach aber genial. Wenn man die relative
URL Adresse mit ../ wie früher einen Ordner hochwandert und diese URL an ein ASP.Net Control wie ein
Hyperlink oder Image.SourceURL
dann wird diese Text nicht angezeigt und
Dim sLink As String = "../Details?d=" & intIDDetail & "&a=" & fx.dbZahlInt(row("IDArea")) & "&f=" & fx.dbZahlInt(row("IDFolder")) & "&l=0&t=" & sTitleURL
Im XAML des Controls
<asp:HyperLink ID="lnkTitle" runat="server" style="color: blue; font-family: Arial;">
Und dieses wird zur Laufzeit gesetzt mit
lnkImage.NavigateUrl = value
Aber auch im Image gilt die URL des Bildes, dass die Angabe einer URL mit einer zum relativen Parent Pfad eingetragenen Teil in der URL, das ASP.Net Controls diesen Teil korrekt umrechnen,
bevor die Ausgabe gerendert wird.
<asp:Image ID="imgImage" runat="server" style="max-width: 160px; max-height: 160px; min-width: 160px; padding-right: 10px;"/>
Wird gesetzt mit
imgImage.ImageUrl = value
Das gilt auch nicht nur für die Anzeige, sondern auch für die echte URL, die im HTML Debugger sichtbar wird, wie man hier in
Der HTML Ansicht, Code Ansicht unter dem Chrome Browser sehen kann.
Und hier die Auswirkung eine ToParent Strings
../ bei einer ImageUrl
Fehlermeldung im IIS Internet Information Server
HTTP Error 404.0 - Not Found
Die gesuchte Ressource wurde entfernt oder umbenannt, oder sie steht vorübergehend nicht zur Verfügung.
Wahrscheinlichste Ursachen:
- Das angegebene Verzeichnis oder die angegebene Datei ist auf diesem Webserver nicht vorhanden.
- Die URL enthält einen Schreibfehler.
- Der Zugriff auf die Datei wird von einem benutzerdefinierten Filter oder Modul wie URLScan eingeschränkt.
Mögliche Vorgehensweise:
- Erstellen Sie den Inhalt auf dem Webserver.
- Überprüfen Sie die Browser-URL.
- Überprüfen Sie das Ablaufverfolgungsprotokoll für Anforderungsfehler, und überprüfen Sie, welches Modul "SetStatus" aufruft. Klicken Sie hier, um weitere Informationen zu erhalten.