@ogi Gracias por eso! ¡No sabía que no funcionaba completamente con solo una llamada! ¡Corrí Uri.UnescapeDataStringdos veces y obtuve lo que quería! : D
C0NFUS3D
2
En mi humilde opinión, mejor que la respuesta aceptada porque su primera sugerencia también funciona en Portable Class Libaries (PCL)
Daniel Veihelmann
2
¡la mejor respuesta! pero considere cómo se anidan sus parámetros antes de decodificar completamente. por ejemplo, un valor de parámetro podría ser una URL codificada que a su vez tiene un parámetro con otra URL codificada. Si lo decodifica completamente de una vez, ya no podrá saber qué era qué. sería como sacar a todos los padres de una declaración de álgebra. a = ((b + c) * d) si no lo escapa por completo, el significado de los componentes se puede perder a = b + c * d
DanO
2
UnescapeDataString no es suficiente ya que no manejará varios casos (por ejemplo, los parámetros en una URL que contienen un espacio usan '+' pero UnescapeDataString intencionalmente no los convierte en espacios). Uri maneja más que solo URL, ya que la pregunta es acerca de la URL que deberíamos usar HttpUtility.UrlDecode
System.Web.HttpServerUtilityBase
, pero eso ya debería importarse en ASP.NET MVC.o
La URL no está completamente decodificada con una llamada. Para decodificar completamente, puede llamar a uno de estos métodos en un bucle:
fuente
Uri.UnescapeDataString
dos veces y obtuve lo que quería! : D¿Has probado
HttpServerUtility.UrlDecode
oHttpUtility.UrlDecode
?fuente
HttpServerUtility.UrlDecode
cuál es un método de instancia, se debe usarHttpContext.Current.Server.UrlDecode
.Prueba esto:
fuente
Tratar:
fuente