27

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([&=]|$)")
3
  • What's the point of checking if a query string exists but is empty? It's value (lack of value actually) is just as useless. Commented Dec 30, 2008 at 14:29
  • 1
    @Dreas, I assume that there is an implied "=true" at work (while the complete absence of a foo parameter is an implied "foo=false") Commented Dec 30, 2008 at 14:32
  • bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false; //will return true even if it doesnt have a value Commented Dec 30, 2008 at 14:34

6 Answers 6

45

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Better really late than never I guess... :-)
9

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

Comments

7

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;

1 Comment

I would like to check for a querystring key value even if it has no value. I've updated the question accordingly.
0

Dreas is correct. Variable "bar" has a value but foo does not.

1 Comment

Right, there is no value for foo. However, I can find no reference to foo other than in the raw url. A blank parameter is a parameter nonetheless.
0

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.

Comments

0

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.