web-dev-qa-db-ja.com

Asp.net-空のQueryStringパラメーター

問題

Asp.netを使用して次のURLのクエリ文字列のfooパラメータを確認する適切な方法は何ですか?これも可能ですか?

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

Request["foo"]Request.QueryString["foo"]をチェックしてみましたが、両方ともnullを取得しました。また、ListQueryStringコレクションの値を入力しようとしましたが、以下で説明するように、値は含まれていません。

質問

値がないことは理解していますが、Request["foo"]nullではなく空の文字列を返すべきではありませんか?値がなくてもクエリ文字列キーが存在するかどうかを確認する方法はありますか?

ノート

hereRequest.QueryString.AllKeysに空白のクエリ文字列パラメータのnullが含まれていることがわかりました。

[編集]

以下に James および Dreas で述べられているように、生のURLを解析するための正規表現が最良の(そしておそらく唯一の)アプローチかもしれません。

Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
24
brad

nullNameValueCollectionのキーとして使用すると、値を持たないパラメーター名のコンマ区切りのリストが表示されます。

_http://example.com?bar=3&foo_の場合、_Request.QueryString[null]_を使用すると、fooが取得されます。

値のないパラメーター名が複数ある場合は、コンマで区切られた値が表示されます。

_http://example.com?bar=3&foo&test_の場合、値として_foo,test_が返されます。

更新:

実際には、Request.QueryString.GetValues(null)を使用して、値を持たないパラメーター名を取得できます。

43
joelvh

Request.ServerVariables["QUERY_STRING"]は、クエリ文字列completeを文字列として返します。次に、RegexまたはIndexOfを使用して検索します

8
James Curran

fooパラメータに値がないため、nullになります。

...正確には何が問題なのですか?

それでもその存在を確認したい場合は(値が不足していますが)、次のようなことを試してください。

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
7
Andreas Grech

QueryString ["Bar"]は、変数Barに関連付けられた値3を持っているため、3を返します。ただし、Fooは値がないため、nullを返します。変数またはキーでQueryStringを呼び出すときは、キーではなく値をクエリしているため、nullを返します。

0
Xaisoft

クエリ文字列はおそらく無駄なものです。 Request.Params [""]を使用するか、それを繰り返すと、目的の1つが見つかります。それは他のものより本当に便利です。

これについてサポートが必要な場合はお知らせください。

0
VIRA

Dreasは正しいです。変数「bar」には値がありますが、fooにはありません。

0
Perry Neal