Как я могу изменить Сравнение коллекции Request.Form ASP.NET?
ASP.NET-х Request.Form["key"]
коллекция использует регистр без учета регистра. Это меня облажает, потому что у меня есть данные формы POST, которые выглядят так:
"subject=MySubjectLowerCase&Subject=MySubjectUpperCase"
В следствии, Request.Form["subject"]
(или же Request.Form["Subject"]
в этом отношении) верните оба значения:
MySubjectLowerCase,Subject=MySubjectUpperCase
но то, что я хочу, - это единственное значение для моего конкретного ключа с учетом регистра.
Как я могу изменить Comparer на регистр?
2 ответа
Вы не можете изменить встроенный компаратор. Однако, если вы хотите проанализировать необработанное тело сущности, вы можете получить к нему доступ через HttpRequest.InputStream, GetBufferlessInputStream или GetBufferedInputStream. Первые два сделают Request.Form недоступным; последний сохраняет Request.Form на случай, если от него зависит другая часть конвейера запросов. Это следует делать только в крайнем случае, так как написание парсера может быть очень сложным занятием.
Request.Form является объектом NameValueCollection. Вам нужно будет реализовать настроенный интерфейс IComparerInterface для этого. Вы найдете это полезным: http://msdn.microsoft.com/en-us/library/system.collections.icomparer(v=vs.100).aspx
Сказав это, tvanfosson прав, что плохая идея реализовать значения параметров с учетом регистра.