DateTime из сообщения Javascript для контроллера в ASP.NET приводит к нулю (01/01/0001) - PullRequest
1 голос
/ 11 июня 2010

Это сводит меня с ума, похоже на это . Если я использую стандартную форму без javascript, контроллер правильно связывает дату и время. Однако, когда я отправляю сообщение из формы, оно всегда связывается с нулем:

"MyObject.Name": "Test name",
"MyObject.Date": "5/1/2001"

Я пробовал пару вариантов, 5-1-2001 и т. Д., Но, похоже, не смог заставить их принять Я могу подтвердить, что он передается на сервер, как показано в строке Request.Form. Моя культура григорианская, и я установил:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

В Application_BeginRequest (). Что дает?

Ответы [ 3 ]

0 голосов
/ 11 июня 2010

Может ли это быть проблемой локализации? В этом блоге описана распространенная ошибка локализации с DateTime.

0 голосов
/ 23 ноября 2017

DateTime является типом значения, а не ссылочным типом, и требуется DateTime.MinValue, если вы не инициализируете его.Вы должны объявить это как:

DateTime? dt;

Или

Nullable<DateTime> dt;

DateTime? - сокращение от Nullable<DateTime>

0 голосов
/ 11 июня 2010

Вы пытались использовать лидирующие нули, например "05/01/2001"?

Стандартные форматы даты инвариантной культуры включают «MM / dd / yyyy», но не «M / d / yyyy», поэтому, если это работает, вот почему. В идеале вы должны использовать один из форматов, не связанных с культурой, например, шаблон «O». Тогда не имеет значения, какую культуру вы используете на сервере: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip

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