Reputation: 75444
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.
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?
I found here that Request.QueryString.AllKeys
includes null
for blank querystring parameters.
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([&=]|$)")
Upvotes: 27
Views: 33077
Reputation: 17138
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.
Upvotes: 45
Reputation: 1504
query string is probably a waste one. If you use Request.Params[""] or iterate it, then you will find your desired one. Its really handy than other things.
Let me know if you need any help in this.
Upvotes: 0
Reputation: 46591
QueryString["Bar"] will return 3 because it has the value 3 associated with the variable Bar. However, Foo will return null because their is no value and when you are calling QueryString on a variable or key, you are querying for the value, not the key, so that is why you are returning null.
Upvotes: 0
Reputation: 107950
You get null because the foo
parameter doesn't have a value with it.
...What's the problem exactly?
If you still want to check for its existence (although it lacks a value), try something like this:
bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
Upvotes: 7
Reputation: 103505
Request.ServerVariables["QUERY_STRING"]
will return the query string, complete, as a string. Then search it using a Regex or IndexOf
Upvotes: 9