sirve que para imagen emplea ejemplo editar definicion con atributo c# asp.net query-string

c# - que - title con css



Atributo de URLEncode ASP.Net para uso en Cadena de consulta (6)

Necesito redireccionar a una url que pasa un parámetro como cadena de consulta.

Esto puede incluir un Ampersand en el valor. como

string value = "This & That"; Response.Redirect("http://www.example.com/?Value=" + Server.UrlEncode(value));

Sin embargo, esto devuelve http://www.example.com/?Value=This+&+That

¿Qué debería estar usando para codificar esta cadena?

EDITAR: Gracias a Luke por señalar lo obvio, el código realmente funciona correctamente. Me disculpo, ¡mi pregunta no era una pregunta válida después de todo!

La página que iba a tener tenía un montón de código antiguo heredado que, al parecer, está haciendo un poco de codificación y descodificación, por lo que parece que mi urlencode no funcionaba.

Desafortunadamente, mi solución es dejar de utilizar por completo un & hasta que el código en cuestión pueda ser reescrito. ¡No odies el viejo código!



sin embargo, esto es correcto si tiene varios parámetros en la cadena de consulta.

por ejemplo: & firstname = bob & secondName = "Tracy and John"


Técnicamente haciendo:

value = value.Replace("&", "%26")

hará el truco

EDITAR: Parece haber algunos problemas complicados con los métodos completos de UrlEncode / HttpEncode que no funcionan del todo. Escribí un método simple hace un tiempo que puede ser útil. Esto debería cubrir todos los principales problemas de codificación, y también es fácil escribir un "desanitizador".

Protected Function SanitizeURLString(ByVal RawURLParameter As String) As String Dim Results As String Results = RawURLParameter Results = Results.Replace("%", "%25") Results = Results.Replace("<", "%3C") Results = Results.Replace(">", "%3E") Results = Results.Replace("#", "%23") Results = Results.Replace("{", "%7B") Results = Results.Replace("}", "%7D") Results = Results.Replace("|", "%7C") Results = Results.Replace("/", "%5C") Results = Results.Replace("^", "%5E") Results = Results.Replace("~", "%7E") Results = Results.Replace("[", "%5B") Results = Results.Replace("]", "%5D") Results = Results.Replace("`", "%60") Results = Results.Replace(";", "%3B") Results = Results.Replace("/", "%2F") Results = Results.Replace("?", "%3F") Results = Results.Replace(":", "%3A") Results = Results.Replace("@", "%40") Results = Results.Replace("=", "%3D") Results = Results.Replace("&", "%26") Results = Results.Replace("$", "%24") Return Results End Function


Debe usar Server.UrlEncode(string containing the ampersand) .

Acabo de probarlo y la cadena de consulta devuelta se codificó correctamente y luego se decodificó.

HttpUtility no funcionó para esta operación.


Y si obtiene un valor de un GridView & ampersand "&amp;" & ampersand bien podría aparecer como "&amp;" :

row.Cells[4].Text.ToString() = xxxx&amp;

Entonces, en este caso, querrás usar:

.Replace("&amp;", "%26")