控制器未收到英国格式的MVC3日期

鉴于这个VM

public class ApplicationDTO : BaseDTO { public DateTime Date { get; set; } public int JobId {get;set;} public int Status {get;set;} [Required] public string Message { get; set; } public string ExpertCode { get; set; } } 

因此,我有一个隐藏的领域

 @Html.Hidden("Date", DateTime.Now) 

哪个小提琴手告诉我的是按照我的预期发送到服务器(英国格式,我在英国!)

在此处输入图像描述

但在控制器上,日期显示为默认最小值。 日期

在此处输入图像描述

它只是英国格式吗? 如果是这样,我最好的方式是什么呢? 虽然目前我将其设置为当前日期,但可能会将其设置为任何给定日期,即

 @Html.HiddenFor(x => x.Date) 

我正在使用AJAX提交表单,如果这有所不同。

如果是Get MVC在模型绑定期间默认使用文化不变格式(基本上是美国格式)。 因此它不接受英国日期格式。 我相信设计的原因是可以传递一个查询字符串因此它需要文化不变(我不是100%被这种逻辑所说服)。

本文介绍了一种可能的解决方案http://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/

我们只是确保我们永远不会使用英国日期格式

这个问题还涉及DateTime和ASP.NET MVC 3模型绑定的全球化问题

您应该使用数据注释来格式化模型或视图模型上的日期

 public class ApplicationDTO : BaseDTO { [DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)] public DateTime Date { get; set; } public int JobId {get;set;} public int Status {get;set;} [Required] public string Message { get; set; } public string ExpertCode { get; set; } } 

根据您的格式应用。 正如我所见,你没有为你的财产提供任何格式

我在dd.MM.yyyy格式中遇到了类似的问题,并且必须将web.config中的globalization元素设置为适当的culture和uiCulture属性设置。

如果使用@Html.Hidden(不是For helper),它将无法将请求中的参数与模型中的属性匹配。

如果您使用@ Html.HiddenFor(x => x.Date,“28/2/2013”​​),您将看到适当填充的日期。

您还可以validationRequest.Params集合。 在Action中加入一个断点。 你会看到其中一个Params有你的约会…. JQuery不会以任何方式影响它。