@ogi Danke dafür! Ich wusste nicht, dass es mit nur einem Anruf nicht vollständig funktioniert! Ich bin Uri.UnescapeDataStringzweimal gelaufen und habe bekommen, was ich wollte !! : D
C0NFUS3D
2
IMHO besser als die Antwort, weil Ihr erster Vorschlag auch in Portable Class Libaries (PCLs) funktioniert
Daniel Veihelmann
2
beste Antwort! Überlegen Sie jedoch, wie Ihre Parameter verschachtelt sind, bevor Sie sie vollständig dekodieren. Ein Parameterwert kann beispielsweise eine codierte URL sein, die selbst einen Parameter mit einer anderen codierten URL enthält. Wenn Sie ihn auf einmal vollständig dekodieren, können Sie nicht mehr erkennen, was was war. Es wäre, als würde man alle Eltern aus einer Algebra-Aussage herausreißen. a = ((b + c) * d) Wenn Sie es vollständig entfernen, kann die Bedeutung von Komponenten verloren gehen. a = b + c * d
DanO
2
UnescapeDataString ist nicht ausreichend, da es nicht mehrere Fälle behandelt (zum Beispiel Parameter in einer URL, die ein Leerzeichen enthalten, verwenden '+', aber UnescapeDataString konvertiert diese absichtlich nicht in Leerzeichen). Uri behandelt mehr als nur URL, da die Frage nach der URL lautet, sollten wir HttpUtility.UrlDecode
System.Web.HttpServerUtilityBase
, aber das sollte schon in ASP.NET MVC importiert werden.oder
Die URL wird mit einem Aufruf nicht vollständig dekodiert. Um vollständig zu dekodieren, können Sie eine dieser Methoden in einer Schleife aufrufen:
quelle
Uri.UnescapeDataString
zweimal gelaufen und habe bekommen, was ich wollte !! : DHast du es versucht
HttpServerUtility.UrlDecode
oderHttpUtility.UrlDecode
?quelle
HttpServerUtility.UrlDecode
Instanzmethode zuzugreifen, sollte man verwendenHttpContext.Current.Server.UrlDecode
.Versuche dies:
quelle
Versuchen:
quelle