День и месяц меняются местами по свойству дата при сохранении сущности на производственном сервере


Я столкнулся с проблемой на рабочем сервере клиентов, где месяц и день меняются местами на свойство модели представления при сохранении сущности. Например, если я выберу April 9th 2012 (04/09/2012) в окне выбора даты, то дата будет сохранена как September 4th 2012 (09/04/2012).

Те же действия контроллера корректно работают на локальном сервере разработки / тестирования, и я не уверен, на что смотреть дальше?

свойство в viewmodel :

[DisplayName("Date")]
[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yy}")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }

помощник внутри релевантного вид :

@Html.EditorFor(model => model.StartDate)

jQuery ui datepicker :

$('#StartDate').datepicker({ dateFormat: 'mm/dd/yy' });

урезанная версия контроллера :

public ActionResult Create(BulletinBoardViewModel bulletin)
{
    var model = AutoMapper.Mapper.Map<BulletinBoardViewModel, BulletinBoard>(bulletin);
    _repository.Save(model);

    return RedirectToAction("Index");
}

заголовки соответствующего поста :

StartDate:04/09/2012

Cache-Control:private, s-maxage=0
Content-Length:131
Content-Type:text/html; charset=utf-8
Date:Tue, 10 Apr 2012 02:43:16 GMT
Location:/BulletinBoard
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
X-Powered-By:ASP.NET
1 4

1 ответ:

Похоже, что сервер клиента настроен для британского английского, а не для нас. Это общая проблема CultureInfo. В любом случае, когда объект сохраняется, значение даты все равно должно быть правильным. Он просто отображается по-разному из-за выбора культуры пользовательского интерфейса.

Можете ли вы определить конкретный фрагмент кода, где это является фактической проблемой, а не просто кажущейся?

Кроме того, он на самом деле не сохраняется как 4 сентября. Ты просто читаешь его таким образом. Попробуй сбор, например, дек. 31st. когда сущность будет сохранена, вы, вероятно, увидите 31/12/2012. Сервер просто отображает дату в формате dd/MM/yyyy.