ASP.NET で値のないクエリ文字列パラメータにアクセスする 質問する

ASP.NET で値のないクエリ文字列パラメータにアクセスする 質問する

2 つの動作を持つページを設定しようとしています。 URL でそれらを分離しています。1 つの動作は 経由でアクセスされ/some-controller/some-action、もう 1 つは 経由でアクセスされます/some-controller/some-action?customize

ただし、2 番目の URL にアクセスすると、Request.QueryString オブジェクトに何も含まれていないように見えます...つまり、keys コレクションには 1 つの要素がありますが、それは であり、 ではありませんnull'customize'これについて、またはこれを有効にする方法について、何かアイデアをお持ちの方はいらっしゃいますか。クエリ文字列を手動で解析することは、絶対に避けたいです :)。

ベストアンサー1

キーレスパラメータ

John Shermanの回答は技術的にのみ正しい。クエリパラメータそれなし価値観サポートされていませんが、クエリ値それなしキーサポートされています。

つまり、 は、値が で、キーがない (つまり、キーが) "/some-controller/some-action?customize"1 つのクエリ パラメータを持つ URL であると見なされます。"customize"null

取得中

このようなクエリ パラメータをすべて取得するには、 を使用してRequest.QueryString.GetValues(null)文字列の配列として取得するか、 を使用しRequest.QueryString[null]て単一のコンマ区切りの文字列として取得します。

空のパラメータ

空のパラメータ( で発生)は、のキーを持つ"?foo=bar&&spam=eggs"の値として表示され、末尾の も同様に表示されます。string.Emptynull"&"

"?&"たとえば、かなり珍しいクエリ文字列 は、 の 2 つの値として表示されstring.Empty、どちらも のキーを持ちますnull

空のクエリ文字列

パターンに適合しないエッジ ケースが 1 つあります。それは、空ですが存在するクエリ文字列です (例: "/some-controller/some-action?")。前に示したパターンに基づくと、string.Emptyキーが である1 つの値を持つことになりますnull。ただし、実際には値はありません。

おすすめ記事