1

ASP.NETのRequest.Form["key"]コレクションでは、大文字と小文字を区別しないComparerを使用しています。次のようなフォームPOSTデータがあるため、これは私を台無しにしています。

"subject=MySubjectLowerCase&Subject=MySubjectUpperCase"

その結果、Request.Form["subject"](またはRequest.Form["Subject"]そのことについては)両方の値を返します。

MySubjectLowerCase,Subject=MySubjectUpperCase

ただし、必要なのは、大文字と小文字を区別する、特定のキーの単一の値です。

Comparerを大文字と小文字を区別するように変更するにはどうすればよいですか?

4

2 に答える 2

2

組み込みの比較機能を変更することはできません。ただし、生のエンティティ本体を解析する場合は、HttpRequest.InputStream、GetBufferlessInputStream、またはGetBufferedInputStreamを介してアクセスできます。最初の2つは、Request.Formにアクセスできなくなります。後者は、要求パイプラインの別の部分がそれに依存する場合に備えて、Request.Formを保持します。パーサーを作成するのは非常に難しい作業になる可能性があるため、これは最後の手段としてのみ実行する必要があります。

于 2013-01-28T04:59:02.437 に答える
0

Request.FormはNameValueCollectionオブジェクトです。カスタマイズされたIComparerInterfaceを実装する必要があります。これは便利です:http: //msdn.microsoft.com/en-us/library/system.collections.icomparer (v = vs.100).aspx

そうは言っても、tvanfossonは、大文字と小文字を区別するパラメータ値を実装するのは悪い考えだというのは正しいことです。

于 2013-01-28T03:56:29.047 に答える