1

ASP.NET 的Request.Form["key"]集合使用不区分大小写的比较器。这把我搞砸了,因为我的表单 POST 数据看起来像:

"subject=MySubjectLowerCase&Subject=MySubjectUpperCase"

结果,Request.Form["subject"](或Request.Form["Subject"]就此而言)返回两个值:

MySubjectLowerCase,Subject=MySubjectUpperCase

但我想要的是我的特定键的单个值,区分大小写。

如何将比较器更改为区分大小写?

4

2 回答 2

2

您无法更改内置比较器。但是,如果您愿意解析原始实体主体,则可以通过 HttpRequest.InputStream、GetBufferlessInputStream 或 GetBufferedInputStream 访问它。前两个将使 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 回答