Похоже, связка для даты работает неправильно в asp.net MVC - PullRequest
4 голосов
/ 02 апреля 2012

enter image description here

У меня начальная дата в QueryString со значением: 3/1/2012

DateTime.Parse (Request.QueryString ["startdate"]). Номер месяца возврата месяца:1

но в моем контроллере у меня есть действие Index (DateTime startDate) и startDate.Month return 3

Кто-нибудь может объяснить, почему привязка даты не работает должным образом?

Кстати, у меня уже есть культура в web.config:

<globalization uiCulture="en-GB" culture="en-GB"/>

1 Ответ

6 голосов
/ 02 апреля 2012

Связыватель модели по умолчанию всегда использует InvarianCulture при синтаксическом анализе значений строки запроса, независимо от того, какую культуру вы настроили в своем файле web.config.

  • GET => InvariantCulture
  • POST => агностик культуры

Итак, при условии, что у вас есть 2 действия:

[HttpGet]
public ActionResult Foo(DateTime date)
{
    ...
}

[HttpPost]
public ActionResult Bar(DateTime date)
{
    ...
}

когда вы вызываете действие Foo, вы всегда должны использовать инвариантную культуру для форматирования даты в строке запроса, тогда как когда вы вызываете действие Bar и передаете параметр date в полезную нагрузку тела POST, связыватель модели по умолчанию будет использовать культура настроена в вашем файле web.config.

Взгляните на следующий пост в блоге , который более подробно описывает это.

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