Строковые параметры с одинаковым именем в другом регистре были разделены запятыми в один строковый параметр - PullRequest
0 голосов
/ 22 января 2019

В запросе javascript я добавил два параметра с тем же именем, но с другим регистром

  1. *.setPostDataItem("FluentSearch", scope.search); (abc)
  2. *.setPostDataItem("fluentSearch", scope.search); (abc)

Мой код на стороне сервераcontroller-> action проанализировал его как

string FluentSearch = abc, abc

Так что в параметре сервера у нас в одной строковой переменной параметры дублируют значение через запятую.

Я ожидаю, что сервер должен проанализировать запрос и записать ихбез запятой.
Где и почему Asp.Mvc предварительно работает одинаковые параметры через запятую?Это конкретное действие исполнителя раньше?

1 Ответ

0 голосов
/ 22 января 2019

Насколько я понимаю, кажется, что клиент отправляет два разных параметра, но сервер обрабатывает их как один, объединяя их как csv.

См. Этот ответ https://stackoverflow.com/a/32127030/1384239

Выдержкаиз ответа

Это полностью зависит от того, является ли этот материал чувствительным к регистру или нет.

В случае C # и IIS, резервное хранилище для проанализированного запросаСтрока в объекте HttpRequest - это System.Collections.Specialized.NameValueCollection, которая нечувствительна к регистру (по умолчанию).

Теперь, глядя на коллекцию значений имен , в ней конкретно сказаночто

Поставщик хеш-кода распределяет хеш-коды для ключей в коллекции NameValueCollection.Поставщик хеш-кода по умолчанию - CaseInsensitiveHashCodeProvider.

Так что, похоже, его можно изменить, чтобы он стал чувствительным к регистру.Я не пробовал это.Вы можете попробовать это.Это поведение должно быть таким же для параметров строки запроса.

...