Asp.net - Parametro QueryString vuoto
-
03-07-2019 - |
Domanda
Il problema
Qual è il modo corretto di verificare il parametro foo
nella seguente stringa di query dell'URL usando asp.net? È anche possibile?
http://example.com?bar=3&foo
Ho provato a controllare Request [" foo "]
e Request.QueryString [" foo "]
e ottengo null
per entrambi. Ho anche provato a popolare un List
con i valori della raccolta QueryString
ma, come ho già detto, non include il valore.
La domanda
Comprendo che non esiste alcun valore, ma Request [" foo "]
deve restituire una stringa vuota anziché null
? C'è un modo per scoprire se esiste una chiave di querystring anche se non ha valore?
Note
Ho trovato qui quella richiesta . QueryString.AllKeys
include null
per i parametri querystring vuoti.
[modifica]
Come indicato di seguito da James e Dreas un Regex per analizzare l'URL grezzo potrebbe essere l'approccio migliore (e forse solo).
Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
Soluzione
Puoi usare null
come chiave per NameValueCollection
e ti darà un elenco delimitato da virgole di nomi di parametri che non hanno valori.
Per http://example.com?bar=3&foo
useresti Request.QueryString [null]
e recupererebbe foo
.
Se hai più di un nome di parametro senza un valore, ti darà un valore delimitato da virgole.
Per http://example.com?bar=3&foo&test
otterrai pippo, test
come valore indietro.
Aggiornamento:
Puoi effettivamente utilizzare Request.QueryString.GetValues ??(null)
per ottenere i nomi dei parametri che non hanno valori.
Altri suggerimenti
Request.ServerVariables [" QUERY_STRING "]
restituirà la stringa di query, completa, come stringa. Quindi cercalo usando un Regex o IndexOf
Ottieni null perché il parametro foo
non ha un valore con esso.
... Qual è esattamente il problema?
Se vuoi ancora verificare la sua esistenza (anche se manca di un valore), prova qualcosa del genere:
bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
Dreas è corretto. Variabile "bar" ha un valore ma foo no.
QueryString [" Bar "] restituirà 3 perché ha il valore 3 associato alla variabile Bar. Tuttavia, Foo restituirà null perché il loro non è un valore e quando si chiama QueryString su una variabile o chiave, si esegue una query per il valore, non per la chiave, quindi è per questo che si restituisce null.
la stringa di query è probabilmente inutile. Se usi Request.Params [" "] o lo esegui, allora troverai quello desiderato. È davvero utile rispetto ad altre cose.
Fammi sapere se hai bisogno di aiuto in questo.