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

时间:2012-04-10 03:06:53

标签: jquery asp.net-mvc asp.net-mvc-3 jquery-ui-datepicker

我在客户端生产服务器上遇到问题,其中月份和时间是保存实体时,将在视图模型属性上交换日期。例如,如果我在日期选择器中选择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 个答案:

答案 0 :(得分:2)

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

您能否确定一个特定的代码片段,而这只是一个明显的问题?

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