Asp.net-空のQueryStringパラメーター
-
03-07-2019 - |
質問
問題
asp.netを使用して、次のURLのクエリ文字列で foo
パラメータをチェックする適切な方法は何ですか?これも可能ですか?
http://example.com?bar=3&foo
Request [" foo"]
および Request.QueryString [" foo"]
をチェックしようとすると、 null
両方。また、 QueryString
コレクションの値を List
に設定しようとしましたが、後述するように、値は含まれていません。
質問
値がないことは理解していますが、 Request [" foo"]
は null
ではなく空の文字列を返すべきではありませんか?値がなくてもクエリ文字列キーが存在するかどうかを確認する方法はありますか?
注
リクエストするここが見つかりました。 QueryString.AllKeys
には、空のクエリ文字列パラメーターの null
が含まれます。
[編集]
James および Dreas 生のURLを解析する正規表現は、最良の(そしておそらく唯一の)アプローチかもしれません。
Regex.IsMatch(Request.RawUrl, "[?&]thumb([&=]|$)")
解決
NameValueCollection
のキーとして null
を使用すると、値のないパラメーター名のコンマ区切りリストが提供されます。
http://example.com?bar=3&foo
の場合は、 Request.QueryString [null]
を使用し、 foo を取得しますcode>。
値のない複数のパラメーター名がある場合、コンマ区切りの値が与えられます。
http://example.com?bar=3&foo&test
の場合、値として foo、test
が返されます。
更新:
実際には Request.QueryString.GetValues(null)
を使用して、値のないパラメーター名を取得できます。
他のヒント
Request.ServerVariables [" QUERY_STRING"]
は、完全なクエリ文字列を文字列として返します。次に、正規表現またはIndexOfを使用して検索します
foo
パラメーターに値がないため、nullになります。
...問題は正確に何ですか?
まだ存在を確認したい場合(値はありませんが)、次のようなものを試してください:
bool doesFooExist = Request.Url.AbsoluteUri.IndexOf("foo=") >= 0 ? true : false;
夢は正しい。変数" bar"には値がありますが、fooにはありません。
QueryString [" Bar"]は、変数Barに関連付けられた値3を持つため、3を返します。ただし、Fooは値がないためnullを返します。変数またはキーでQueryStringを呼び出すと、キーではなく値を照会しているため、nullを返します。
クエリ文字列はおそらく無駄です。 Request.Params [""]を使用するか、それを反復する場合、目的のものが見つかります。他のものよりも本当に便利です。
これで何か助けが必要かどうか教えてください。