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.Empty
null
"&"
"?&"
たとえば、かなり珍しいクエリ文字列 は、 の 2 つの値として表示されstring.Empty
、どちらも のキーを持ちますnull
。
空のクエリ文字列
パターンに適合しないエッジ ケースが 1 つあります。それは、空ですが存在するクエリ文字列です (例: "/some-controller/some-action?")。前に示したパターンに基づくと、string.Empty
キーが である1 つの値を持つことになりますnull
。ただし、実際には値はありません。