Como programador de PHP, estoy acostumbrado a usar $ _GET para recuperar la cadena de consulta HTTP ... y si necesito la cadena completa, hay muchas formas de hacerlo.
Sin embargo, en ASP, parece que no puedo obtener la consulta.
Aquí está el código para news.aspx (incrustado en algunos HTML):
<%
string URL = "http://www.example.com/rendernews.php?"+Request.Querystring;
System.Net.WebClient wc = new System.Net.WebClient();
string data = wc.DownloadString(URL);
Response.Output.Write(data);
%>
Estoy obteniendo la salida de un script PHP de un servidor remoto, y esto funciona perfectamente sin Request.Querystring.
El problema es que estoy tratando de obtener la cadena de consulta completa en la primera línea: Request.Querystring. Recibo un error " La referencia de objeto no está configurada como una instancia de un objeto ", lo que básicamente significa que Request.Querystring no existe.
¿Alguna idea de cuál es el problema aquí? ¿Cómo puedo obtener esa cadena de consulta cuando se llama index.aspx como http://test.com/news.aspx?id=2 mi script recupera http://www.example.com/rendernews.php?id=2
Respuestas:
Pruebe
Request.Url.Query
si desea la cadena de consulta sin procesar como una cadena.fuente
Esto debería funcionar bien para ti.
Escribe este código en el
Page_Load
caso de la página.string ID = Request.QueryString["id"].ToString(); Response.Redirect("http://www.example.com/rendernews.php?id=" + ID);
fuente
Request.QueryString
le devuelve una colección de pares clave / valor que representan la cadena de consulta. No es una cuerda. Sin embargo, no crea que eso causaría un error de referencia de objeto. La razón por la que lo entiendes es porque, como señaló Mauro en los comentarios. Es QueryString y no Querystring.Tratar:
o
<% string URL = Request.Url.AbsoluteUri System.Net.WebClient wc = new System.Net.WebClient(); string data = wc.DownloadString(URL); Response.Output.Write(data); %>
Igual que su código, pero
Request.Url.AbsoluteUri
devolverá la ruta completa, incluida la cadena de consulta.fuente
Solo use
Request.QueryString.ToString()
para obtener una cadena de consulta completa, como esta:string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString();
fuente
He probado su ejemplo, y aunque Request.QueryString no es convertible a una cadena ni implícita ni explícita, el método .ToString () devuelve el resultado correcto.
Además, cuando se concatena con una cadena usando el operador "+" como en su ejemplo, también devolverá el resultado correcto (porque esto se comporta como si se hubiera llamado a .ToString ()).
Como tal, no hay nada malo con su código, y sugeriría que su problema se debió a un error tipográfico en su código al escribir "Querystring" en lugar de "QueryString".
Y esto tiene más sentido con su mensaje de error, ya que si el problema es que QueryString es una colección y no una cadena, tendría que dar otro mensaje de error.
fuente
hace un momento, me encontré con el mismo problema. y lo resuelvo de la siguiente manera.
Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);
con referencia a este
fuente