2008-12-09 43 views
6

Estoy tratando de pasar u url como parámetro a un método get. Definí una ruta que acepta un parámetro {* url} para que pueda enviar caracteres "/" sin que separe mi parámetro. Tan pronto como haya un ":" en la url (como en http: o localhost: 3857 por ejemplo), el método nunca se golpea.¿Pasar URL como parámetro get?

El método Html.ActionLink escapa de su propio parámetro, pero no parece escapar del ':'. No puedo escapar de él manualmente porque los caracteres de escape se escapan por el mismo método Html.Actionlink.

¿Alguna idea?

Respuesta

3

Utilice EncodeUrl antes de pasarlo, y luego decodifíquelo en el otro lado.

+0

No conozco ningún EncodeUrl (donde puedo encontrarlo) pero probé HttpUtility.UrlEncode y HttpUtility.UrlPathencode. Ambos terminan enrutarme a un archivo de destino (no existente) en lugar de mi método :( –

+0

HtmlTextWriter.EncodeUrl – Kieveli

+0

HtmlTextWriter.EncodeUrl Método Realiza una codificación URL mínima al convertir espacios en la URL especificada a la cadena "% 20". espacios no son mi problema –

0

Es un truco, pero puedes reemplazar el ':' por '% 3A' (que es la forma de escape), y ver qué hace ActionLink con él. Si se escapó una vez más, tendría que reemplazar la versión escapada dos veces a ':' en el servidor; de lo contrario, simplemente reemplace '% 3A' por ':'

1

Me encontré con el mismo problema. Terminé la eliminación de la Html.ActionLink y lo reemplazó con:

<a href="[email protected]">@item.Title</a> 

@ item.ID es una dirección URL en la API de Netflix, http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357 ejemplo. Ahora mi URL se ve así - /Home/Movies?id=http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357, y acabo de utilizar Request.QueryString para obtener el valor en el controlador :

Request.QueryString.Get("id") 

Probablemente no es ideal pero funciona por ahora.

Cuestiones relacionadas