我在客户端生产服务器上遇到问题,其中月份和时间是保存实体时,将在视图模型属性上交换日期。例如,如果我在日期选择器中选择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
答案 0 :(得分:2)
听起来客户的服务器设置为英式英语而非美国。这是一个常见的CultureInfo问题。无论哪种方式,当对象持久化时,日期值仍应正确。由于UI文化的选择,它的显示方式不同。
您能否确定一个特定的代码片段,而这只是一个明显的问题?
此外,它实际上并没有被保存为9月4日。你只是这样读它。尝试采摘,例如,12月31日。保存实体后,您可能会看到2012年12月31日。服务器只是以dd / MM / yyyy格式显示日期。