我正在C#中编写ASP.NET MVC3应用程序,并发现在我的视图中调用Html.HiddenFor
将呈现DateTime
与如果我要调用Html.DisplayFor
时不同(并且不正确) 。Html.HiddenFor在ASP.NET中错误地格式化日期时间
它从中取值的模型确实有DisplayFormat装饰器,这似乎适用于Html.DisplayFor
。有关财产被写成:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime MeetingStartDate { get; set; }
和视图显示此使用:
@Html.DisplayFor(model => model.MeetingStartDate)
@Html.HiddenFor(model => model.MeetingStartDate)
的DisplayFor通话将呈现日期16/04/2012
但是HiddenFor将呈现为value="04/16/2012 00:00:00"
。
我试过改变当前的文化来设置一个DateTimeFormat
但这没有效果。
当前文化是en-GB,所以它不应该打印en-US日期。
如果这个值被隐藏了,为什么它的格式如何?据推测,它只需要在回来的路上再次解析...如果它不是用于*人类消费的话,那么格式应该不重要。 – 2012-03-15 17:15:31
@JonSkeet出于某种原因,这会使模型无效,即时工作在en-GB上,但它打印出一个en-US的日期。但*只*为这个隐藏的元素 – 2012-03-15 17:27:42
您可以使用自定义编辑器模板请参阅答案:http://stackoverflow.com/questions/8305262/asp-net-mvc-format-of-hidden-datetime – 2016-04-28 10:36:48