質問

問題

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

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

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 [""]を使用するか、それを反復する場合、目的のものが見つかります。他のものよりも本当に便利です。

これで何か助けが必要かどうか教えてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top