鉴于此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提交表单,如果这有所不同。
答案 0 :(得分:5)
如果是Get MVC在模型绑定期间默认使用文化不变格式(基本上是美国格式)。所以它不接受英国日期格式。我相信设计的原因是可以传递一个查询字符串因此它需要文化不变(我不是100%相信这个逻辑)。
本文介绍了可能的解决方案http://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/
我们只是确保我们永远不会使用英国日期格式
此问题还涉及问题Globalization problem with DateTime and ASP.NET MVC 3 Model Binding
答案 1 :(得分:1)
您应该使用数据注释来格式化模型或视图模型上的日期
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; }
}
根据您的申请格式。 正如我所见,你没有为你的财产提供任何格式
答案 2 :(得分:0)
我遇到了与dd.MM.yyyy格式类似的问题,并且必须将web.config中的globalization元素设置为适当的culture和uiCulture属性设置。
答案 3 :(得分:0)
如果使用@ Html.Hidden(不是For helper),它将无法将请求中的参数与模型中的属性匹配。
如果您使用@ Html.HiddenFor(x => x.Date,“28/2/2013”),您将看到正确填充的日期。
您还可以验证Request.Params集合。在Action中加入一个断点。你会看到其中一个Params有你的约会...... JQuery不会以任何方式影响它。