jquery – 在生产服务器上保存实体时,日期和月份正在日期属性上交换

我在客户端生产服务器上遇到了一个问题,其中月份和时间是保存实体时,将在视图模型属性上交换日期.例如,如果我在2012年4月9日(2012年9月4日)选择日期选择器,则日期将保存为2012年9月4日(2012年4月9日).

相同的控制器操作在本地开发/测试服务器上正常工作,我不确定接下来要看什么?

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

最佳答案 听起来客户的服务器设置为英国英语而不是美国.这是一个常见的CultureInfo问题.无论哪种方式,当对象持久化时,日期值仍应正确.由于UI文化选择,它只是以不同的方式显示.

你能否确定一个特定的代码片段,这是一个实际的问题,而不仅仅是一个明显的问题?

此外,它实际上并没有被保存为9月4日.你只是这样读它.尝试采摘,例如,12月31日.保存实体后,您可能会看到2012年12月31日.服务器只是以dd / MM / yyyy格式显示日期.

点赞