Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Empty QueryString parameter

The Problem

What is the proper way to check for the foo parameter in the following url's querystring using asp.net? Is this even possible?

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

I have tried checking Request["foo"] as well as Request.QueryString["foo"] and I get null for both. I have also tried populating a List with the values from the QueryString collection but as I mention below, it does not include the value.

The Question

I understand that there is no value, but shouldn't Request["foo"] return an empty string rather than null? Is there a way to find out if a querystring key exists even if it has no value?

Notes

I found here that Request.QueryString.AllKeys includes null for blank querystring parameters.

[edit]

As stated below by James and Dreas a Regex to parse the raw url might be the best (and possibly only) approach.

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)") 
like image 943
brad Avatar asked Dec 30 '08 14:12

brad


2 Answers

You can use null as the key for the NameValueCollection and it will give you a comma-delimited list of parameter names that don't have values.

For http://example.com?bar=3&foo you would use Request.QueryString[null] and it would retrieve foo.

If you have more than one parameter name without a value, it will give you a value that is comma-delimited.

For http://example.com?bar=3&foo&test you would get foo,test as a value back.

Update:

You can actually use Request.QueryString.GetValues(null) to get the parameter names that don't have values.

like image 90
joelvh Avatar answered Sep 28 '22 03:09

joelvh


Request.ServerVariables["QUERY_STRING"] will return the query string, complete, as a string. Then search it using a Regex or IndexOf

like image 34
James Curran Avatar answered Sep 28 '22 02:09

James Curran