26

問題

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

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

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

質問

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

ノート

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

[編集]

JamesDreasが以下に述べているように、生の URL を解析するための正規表現は、最良の (そしておそらく唯一の) アプローチである可能性があります。

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

6 に答える 6

45

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

http://example.com?bar=3&fooを使用すると、Request.QueryString[null]が取得されますfoo

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

値として返されるためhttp://example.com?bar=3&foo&testです。foo,test

アップデート:

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

于 2010-08-29T21:58:22.880 に答える
9

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

于 2008-12-30T14:30:14.927 に答える
7

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

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

それでもその存在を確認したい場合 (値はありませんが)、次のようにしてみてください。

bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
于 2008-12-30T14:23:03.550 に答える
0

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

于 2008-12-30T14:26:37.397 に答える
0

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

これについて何か助けが必要な場合は私に知らせてください。

于 2011-12-05T06:55:07.577 に答える
0

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

于 2008-12-30T14:57:39.317 に答える