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([&=]|$)")
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top