ASP.NET的Request.Form["key"]
集合使用不区分大小写的Comparer。这让我感到困惑,因为我有形式的POST数据,如下所示:
"subject=MySubjectLowerCase&Subject=MySubjectUpperCase"
因此,Request.Form["subject"]
(或Request.Form["Subject"]
就此而言)会返回两个值:
MySubjectLowerCase,Subject=MySubjectUpperCase
但我想要的是我的特定键的单个值,区分大小写。
如何将Comparer更改为区分大小写?
答案 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认为实现区分大小写的参数值是个坏主意。