Pergunta

O Problema

O que é a maneira correta para verificar se o parâmetro foo na querystring o seguinte URL usando asp.net? Isto é mesmo possível?

http://example.com?bar=3&foo

Eu tentei Request["foo"] verificação, bem como Request.QueryString["foo"] e fico null para ambos. Eu também tentei preencher um List com os valores da coleção QueryString mas como eu menciono abaixo, ele não inclui o valor.

A Pergunta

Eu entendo que não há nenhum valor, mas não deve Request["foo"] devolver uma cadeia vazia em vez de null? Existe uma maneira de descobrir se uma chave querystring existe mesmo se ele não tem valor?

Notas

aqui que Request.QueryString.AllKeys inclui null para em branco querystring parâmetros.

[editar]

Como indicado abaixo por James e Dreas um Regex para analisar o url-prima pode ser a melhor abordagem (e possivelmente apenas).

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
Foi útil?

Solução

Você pode usar null como a chave para o NameValueCollection e ele vai te dar uma lista delimitada por vírgulas de nomes de parâmetros que não têm valores.

Para http://example.com?bar=3&foo você usaria Request.QueryString[null] e seria recuperar foo.

Se você tem mais de um nome de parâmetro sem um valor, ele vai te dar um valor que é delimitada por vírgulas.

Para http://example.com?bar=3&foo&test você obteria foo,test como um valor de volta.

Update:

Você pode realmente usar Request.QueryString.GetValues(null) para obter os nomes dos parâmetros que não têm valores.

Outras dicas

Request.ServerVariables["QUERY_STRING"] retornará a string de consulta, completo, como uma string. Em seguida, procure-lo usando um Regex ou IndexOf

Você começa nulo porque o parâmetro foo não tem um valor com ele.

... Qual é o problema exatamente?

Se você ainda deseja verificar a sua existência (embora ela não tem um valor), tente algo como isto:

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;

Dreas está correto. Variável "bar" tem um valor, mas foo não.

QueryString [ "bar"] retornará 3 porque tem o valor 3 associado à variável Bar. No entanto, Foo retornará nulo porque a sua não é valor e quando você está chamando QueryString em uma variável ou chave, você está consultando para o valor, não a chave, de modo que é por isso que você está retornando null.

string de consulta é provavelmente um desperdício. Se você usar Request.Params [ ""] ou iterate-lo, então você vai encontrar o seu desejado. Sua realmente acessível do que outras coisas.

Deixe-me saber se você precisar de alguma ajuda neste processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top