如何更改ASP.NET的Request.Form集合的Comparer?

时间:2013-01-28 03:16:34

标签: asp.net .net collections icomparer

ASP.NET的Request.Form["key"]集合使用不区分大小写的Comparer。这让我感到困惑,因为我有形式的POST数据,如下所示:

"subject=MySubjectLowerCase&Subject=MySubjectUpperCase"

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

MySubjectLowerCase,Subject=MySubjectUpperCase

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

如何将Comparer更改为区分大小写?

2 个答案:

答案 0 :(得分:2)

您无法更改内置比较器。但是,如果您愿意解析原始实体主体,则可以通过HttpRequest.InputStream,GetBufferlessInputStream或GetBufferedInputStream访问它。前两个将使Request.Form无法访问;后者保留Request.Form,以防请求管道的另一部分依赖于它。这应该只作为最后的手段,因为编写解析器可能是一个非常棘手的练习。

答案 1 :(得分:0)

Request.Form是一个NameValueCollection对象。您需要为它实现自定义的IComparerInterface。你会发现这很有用: http://msdn.microsoft.com/en-us/library/system.collections.icomparer(v=vs.100).aspx

话虽如此,tvanfosson认为实现区分大小写的参数值是个坏主意。