Ich habe derzeit Probleme herauszufinden, wie mit einem Dateipfad zu handhaben (dynamisch) an Steuerelement NavigateUrl
.Wie behandelt man Sonderzeichen in ASP.NET HyperLink.NavigateUrl?
Angenommen, ich versuche, auf eine Datei mit dem Namen jäynä.txt
im Stammverzeichnis von C:
zu verweisen.
Passing "file:///C:/jäynä.txt"
Ergebnis zu einem Link zu file:///C:/jäynä.txt
, wie auch HttpUtility.UrlPathEncode("file:///C:/jäynä.txt")
.
Ersetzen der ä
** s mit ** %E4
, die die Zeichenfolge "file:///C:/j%E4yn%E4.txt"
gibt, macht einen funktionierenden Link zu file:///C:/jäynä.txt
geben, aber ich habe nicht in der Lage gewesen, einen Weg zu finden, den Austausch zu machen, ohne es selbst zu definieren. Mit Replace("ä", "%E4")
, zum Beispiel.
Gibt es eine Möglichkeit, die Dateipfadzeichenfolge automatisch zu verarbeiten, sodass die HyperLink
sie korrekt anzeigt, ohne manuell aufzulisten, welche Zeichen in der Zeichenfolge ersetzt werden sollen?
Zusätzlicher Hinweis:
Es kann ein Weg sein, um dies zu umgehen, indem die Zeichenkodierung spesifying, in dem die Seite gerendert wird, weil das Debuggen zeigt, dass die HyperLink
zumindest die Zeichenfolge speichert "file:///C:/jäynä.txt"
unverändert, aber irgendwie verstümmelt es um die Zeit des Renderings.
Dies ist jedoch nur dann der Fall sein scheint in Wiedergabe der NavigateUrl
, weil anderen Komponenten sowie HyperLink
‚s Text
-property ist durchaus in der Lage zu machen den Charakter ä
unverändert.
Nein, ich glaube nicht, dass es der Browser ist. Ich habe gerade die Quelle der Seite im ersten Fall überprüft und der Link href ist href = "file: /// C: /j%c3%a4yn%c3%a4.txt", was darauf hindeutet, dass der Server es so gerendert hat den ersten Platz. Sie können auf die Lösung hart sein. – vipirtti
Es kann indirekt der Browser sein, basierend auf etwas in BrowserCaps oder etwas ähnliches, um es auf das System zu übertragen. Unabhängig davon müssen die Werte, die Sie für NavigateUrl angeben, vorab bereinigt werden. Dies ist dokumentiert, da es mit UrlEncode nicht automatisch etwas bewirkt. –