В нашем веб-приложении MVC 3 мы определяем Thread.CurrentThread.CurrentCulture
с настройками текущего пользователя. Однако в одном представлении мы передаем данные через Ajax всегда в формате mm/dd/yyyy
, это прекрасно работает, пока культура пользователя равна en_US
. (очевидно)DateTime анализирует по-разному при передаче через HTTP-POST в теле и через HTTP-GET как параметры запроса
Удивительная вещь, она работает для всех пользователей, когда мы передаем ее как HTTP-POST, но перестает работать, когда передаем ее как HTTP-GET. (В обоих случаях одно и то же значение выходит из браузера).
Любые идеи, по которым вызовы HTTP-POST обрабатывались бы иначе, чем HTTP-GET?
Кроме того, для этого действия существуют другие параметры. В случае HTTP-POST, все они установлены в теле, как:
{
"date": "04/15/2016",
"someText": "Hello World",
"someNumber": 42
}
и HTTP-GET они являются параметрами запроса вместо:
domain.tld/controller/action?date=04%2F15%2F2016&someText=Hello+World&someNumber=42
Update:
Чтобы избежать путаницы, метод вызывается правильно и возвращает значения в обоих случаях. Это просто, что параметр DateTime
(который на самом деле DateTime?
) не устанавливается, точно так же, как если бы я установил его на некорректную дату/строку.
Я думаю, что ваша последняя строка текста должна быть прочитана «и для HTTP-GET» – SPlatten
@SPlatten вы абсолютно правы, пробуйте эту ошибку – peter