Обнуляемый параметр DateTime никогда не привязывается при вызове действия - PullRequest
3 голосов
/ 20 сентября 2010

У меня есть следующая функция signuture:

public JsonResult PopulateGrid(int page, Guid? accountId, Guid? systemUserId, Guid? branchId, DateTime? fromDate, DateTime? toDate, HomeVisitType? homeVisitType)

Каждый отдельный параметр привязан очень хорошо, кроме toDate, который оказывается всегда нулевым.
При проверке Request.QueryString["toDate"] он извлекаетправильное значение 30.09.2010.
Похоже, что DateTime ожидает другой формат при связывании.
Что такое правильный формат?

1 Ответ

7 голосов
/ 20 сентября 2010

Быстрый тест в моей системе показывает, что она ожидает данные в формате ММ / ДД / ГГГГ, а не ДД / ММ / ГГГГ, поэтому, вероятно, у вас возникли проблемы.Я предполагаю, что если вы попробуете ту же дату на fromDate, у вас также будет та же проблема с нулевым значением.

Я изменил текущую культуру в своем приложении на ту, которая использует DD / MM / YYYY иказалось, не имеет никакого эффекта.Кажется, та же проблема с десятичной дробью для языка, который использует 10,01 вместо 10.01 ...

Обновление от кого-то разработчика из команды ASP.Net.

" Это преднамеренно. Все, что является частью URI (обратите внимание на «Uniform» в URI), интерпретируется так, как если бы оно исходило из инвариантной культуры. Это так, что пользователь в США, который копирует ссылку и отправляет еечерез чата другу в Великобритании можно быть уверенным, что его друг увидит точно такую ​​же страницу (в отличие от HTTP 500, например, из-за ошибки преобразования DateTime). Как правило, даты проходят в RouteData или QueryString.должен быть в формате гггг-мм-дд, чтобы быть однозначным в разных культурах .

Если вам нужно интерпретировать параметр QueryString или RouteData с учетом культуры,вытяните его в виде строки, затем преобразуйте его в нужный тип вручную, передав желаемую культуру. (DateTime.Parse имеет перегрузки, которые позволяют вам указать культуру.) Если вы выполнитеесть, я также рекомендую взять желаемую культуру в качестве параметра QueryString или RouteData, чтобы не потерять «универсальную» часть URI, например, URL будет выглядеть примерно так ...? culture = fr-fr & date = 01-10-1990."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...