asp.net - por - request querystring javascript
Asp.net-Empty QueryString Parameter (6)
Dreas es correcto. La "barra" variable tiene un valor pero foo no.
El problema
¿Cuál es la forma correcta de verificar el parámetro foo
en la siguiente cadena de consulta de url usando asp.net? ¿Esto es posible?
http://example.com?bar=3&foo
He intentado verificar Request["foo"]
y Request.QueryString["foo"]
y obtengo un null
para ambos. También intenté completar una List
con los valores de la colección QueryString
, pero como menciono a continuación, no incluye el valor.
La pregunta
Entiendo que no hay ningún valor, pero ¿no debería Request["foo"]
devolver una cadena vacía en lugar de null
? ¿Hay alguna forma de averiguar si existe una clave de consulta incluso si no tiene ningún valor?
Notas
Encontré aquí que Request.QueryString.AllKeys
incluye null
para los parámetros de la cadena de búsqueda en blanco.
[editar]
Como se indica a continuación por James y Dreas, un Regex para analizar la url en bruto podría ser el mejor (y posiblemente único) enfoque.
Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
Obtiene nulo porque el parámetro foo
no tiene un valor.
... ¿Cuál es el problema exactamente?
Si aún desea verificar su existencia (aunque le falta un valor), intente algo como esto:
bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
QueryString ["Barra"] devolverá 3 porque tiene el valor 3 asociado a la barra variable. Sin embargo, Foo devolverá nulo porque no tiene valor y cuando llama a QueryString en una variable o clave, está consultando el valor, no la clave, por lo que está devolviendo nulo.
Request.ServerVariables["QUERY_STRING"]
devolverá la cadena de consulta, completa, como una cadena. Luego búscalo usando Regex o IndexOf
cadena de consulta es probablemente una basura. Si usa Request.Params [""] o lo itera, encontrará el deseado. Es realmente útil que otras cosas.
Avíseme si necesita ayuda con esto.
Puede usar null
como clave para NameValueCollection
y le dará una lista delimitada por comas de nombres de parámetros que no tienen valores.
Para http://example.com?bar=3&foo
usaría Request.QueryString[null]
y recuperaría foo
.
Si tiene más de un nombre de parámetro sin un valor, le dará un valor delimitado por comas.
Para http://example.com?bar=3&foo&test
obtendrás foo,test
como valor devuelto.
Actualizar:
Puede usar Request.QueryString.GetValues(null)
para obtener los nombres de los parámetros que no tienen valores.